turbodelphi-Programm

Tutorials.at
Verfügbare Informationen zu "turbodelphi-Programm"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Moritz - Krait - Dirty Oerty
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: Pascal
  • Antworten: 4
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: turbodelphi-Programm
  • Letzte Antwort: vor 16 Jahren, 1 Monat, 19 Tagen, 4 Stunden, 35 Minuten
  • Alle Beiträge und Antworten zu "turbodelphi-Programm"

    Re: turbodelphi-Programm

    Moritz - 04.01.2008, 20:47

    turbodelphi-Programm
    Ich habe ein Delphi-Program für Turbodelphi entworfen, welches die Primzahlen von 0 bis zu einem beliebigem Wert ermittelt, in einem file of boolean zwischenspeichert (ist der xte Datensatz true, ist x eine Primzahl, sonst nicht), und schließlich in einer Textdatei speichert. Nur dauert die Ausführung ewig, auch wenn man z.B. 20 als Obergrenze angibt. Ich glaube, es werden dann nicht nur alle primzahlen bis zur obergrenze ermittelt, sondern soviel wie longint fassen kann.
    Hier der Turbodelphi-Quelltext:


    prime.pas (das Hauptprogramm)
    Code:

    program prime;

    uses
      Forms,
      Unit4 in 'Unit4.pas' {Form4},
      primeunit in 'primeunit.pas',
      writeunit in 'writeunit.pas';

    {$R *.res}

    begin
      Application.Initialize;
      Application.CreateForm(TForm4, Form4);
      Application.Run;
    end.




    Hier die units:

    Code:


    unit primeunit;

    interface
    procedure getallprime (max: longint; path: string);  //sucht Primzahlen
    implementation
     uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, unit4;

     procedure save_prime (prime: longint; path: string);    //Speichert eine gefundene Primzahl in einer file of boolean;
    var dat: file of boolean;
    var bool: boolean;
    begin
      bool:=true;
      assign (dat, path);
      if not fileexists(path) then rewrite(dat)
      else reset (dat);
      seek (dat, prime);
      write (dat, bool);
      close (dat);
    end;

    procedure delete_prime (prime: longint; path: string);
    var dat: file of boolean;
    var bool: boolean;
    begin
      bool:=false;
      assign (dat, path);
      if not fileexists (path) then rewrite (dat)
      else reset (dat);
      seek (dat, prime);
      write (dat, bool);
      close (dat);
    end;



    procedure getallprime (max: longint; path: string);
    var
      i, j, hlp: longint;
    begin
      for i := 1 to max do
      begin
      for j:=1 to (trunc(sqrt(i)))+2 do
      begin
        hlp:=0;
        hlp:=i mod j;
        if hlp <>0 then delete_prime (i, path)

      end;


    end;
    end;
    end.






    Code:

    unit Unit4;

    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,
      primeunit, writeunit;

    type
      TForm4 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        Button2: TButton;
        Edit2: TEdit;
        Button3: TButton;
        Edit3: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
      starte: boolean;
      path: string;
        { Private-Deklarationen }
      public
      max: longint;
        { Public-Deklarationen }
      end;

    var
      Form4: TForm4;

    implementation

    {$R *.dfm}
    procedure save_prime (prime: longint; path: string);
    var dat: file of boolean;
    var bool: boolean;
    begin
      bool:=true;
      assign (dat, path);

                                       {$I-} reset (dat);
                                       read (dat, bool);
                                       close (dat);
                                       assign (dat, path);  {$+}
                                       if ioresult<>0 then rewrite (dat)
                                       
      else reset (dat);
      bool := true;
      seek (dat, prime);
      write (dat, bool);
      close (dat);
    end;

    procedure delete_prime (prime: longint; path: string);
    var dat: file of boolean;
    var bool: boolean;
    begin
      bool:=false;
      assign (dat, path);
      if not fileexists (path) then rewrite (dat)
      else reset (dat);
      seek (dat, prime);
      write (dat, bool);
      close (dat);
    end;



    procedure TForm4.Button1Click(Sender: TObject);
    var i: longint;
    begin
      if button1.caption='Starte...' then
        begin
        max:=longint(edit1.Text);
        button1.Caption := 'Beende...';
        starte:=true;
        for  i:=0 to max do save_prime (i, path);

        getallprime (max, path);
        starte := false;
        button1.Caption := 'Starte...';
        button3.enabled := true;

        end

        else
        begin
        button1.caption:='Starte...';
        starte:=false;
      end;
    end;
    procedure TForm4.Button2Click(Sender: TObject);
    begin
    path:=edit2.text;
    end;

    procedure TForm4.Button3Click(Sender: TObject);
    begin
    schreibe_datei (edit3.text, edit2.text);
    end;

    procedure TForm4.FormCreate(Sender: TObject);
    begin
    path := edit2.text;
    end;

    end.






    Code:

    unit writeunit;

    interface
    procedure schreibe_datei (path, qpath: string);
    implementation
    procedure schreibe_datei (path, qpath: string);
    var dat: file of boolean;
    var ziel: text;
    var i: longint;
    var zw: array [1..2147483647] of boolean;
    begin
      assign (dat, qpath);
      reset (dat, qpath);
      for i:=1 to 2147483647 do
      begin
        seek (dat, i);
        read (dat, zw[i]);
      end;
      close (dat);
      assign (ziel, path);
      reset (ziel);
      for i:=1 to 2147483647 do
      begin
        if zw[i] then write (ziel, i);

      end;




    end;
    end.







    Ach ja, und noch was: wie kann man hier die Programmausführung optimieren??



    Re: turbodelphi-Programm

    Moritz - 14.01.2008, 18:52


    blickt da denn niemand durch??



    Re: turbodelphi-Programm

    Krait - 26.03.2008, 18:42


    hab gestern est angefangen turbo pascal zu lernen kapier sehr wenig davon.
    Woher kennst du die uses?



    Re: turbodelphi-Programm

    Dirty Oerty - 26.03.2008, 18:56


    Allgemein zur Programmoptimierung:

    Schau, welche Codeteile häufig wiederholt werden und versuch dort etwas zu optimieren.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    Englischvokabelverwalter - gepostet von Dragorad am Montag 23.10.2006
    Nachfolger von C (C/C++/C#) ?! - gepostet von Dirty Oerty am Mittwoch 07.02.2007
    Welche Programmiersprache? - gepostet von The Dust am Sonntag 24.06.2007
    mit den 3 Ordnern - gepostet von KevIn am Sonntag 09.07.2006
    qIp, ICQ, MSN, Trilian und andere... - gepostet von Dirty Oerty am Samstag 17.11.2007
    <iostream.h> mit <conio.h>, geht nicht ? - gepostet von EndSub am Montag 05.06.2006
    Allokieren in PASCAL ? - gepostet von exbs am Montag 19.02.2007
    Begrenzte Darstellungsgenauigkeit! - gepostet von Kimi am Dienstag 06.11.2007
    Knifflige fehler im kleinem programm - gepostet von aimheld am Samstag 23.09.2006



    Ähnliche Beiträge wie "turbodelphi-Programm"

    Wer kommt in Mohrenkönig! Neues Programm!! - dussi (Montag 16.04.2007)
    TV Programm - Mietzlinchen (Freitag 13.07.2007)
    Programm - ostaricia (Dienstag 18.09.2007)
    neues oder altes Programm ??? - kiki010101 (Donnerstag 21.06.2007)
    Sechselberg Gemeinschaftsfreizeit Programm - Karolinchen (Dienstag 03.10.2006)
    Schleifen Programm - Kimi (Samstag 01.12.2007)
    Gericht verbietet "Cards"-Programm - 4dministr4t0r (Montag 25.12.2006)
    Ezan Programm! - eQua (Freitag 06.01.2006)
    Speak-Programm - Sir_Achim (Montag 15.01.2007)
    Boah, der Name ist programm! - Mez (Donnerstag 24.02.2005)