Verfügbare Informationen zu "turbodelphi-Programm"
Qualität des Beitrags: 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, 18 Tagen, 16 Stunden, 7 Minuten
Alle Beiträge und Antworten zu "turbodelphi-Programm"
Re: turbodelphi-Programm
Moritz - 04.01.2008, 20:47turbodelphi-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)