Der code:
Code:
procedure TForm1.Button3Click(Sender: TObject);
const
Pfad = 'E:\Delphi\Mathematik\Aufgelistete Primzahlen.txt';
var i,j,k : int64;
primzahl:int64;
sl: TStringList;
f:textfile;
begin
assignfile(f,Pfad);
rewrite(f);
write(f, '2');
closefile(f);
zeit := time;
sl := TStringList.Create;
memo1.Clear;
abbruch := false;
aerg := 1;
j:=0;
nochr :=false;
if strtoint64(edit7.Text)<2 then exit else i:=3;
while i<strtoint64(edit7.Text)do
begin
try
while (j < aerg)and(j< sl.count) do
begin
sl.loadfromfile(pfad);
primzahl:=strtoint64(sl[j]);
if i mod primzahl > 0 then nochr:= true//primzahl noch ja
else //keine Primzahl
begin
nochr:= false;
j:= aerg;
end;
inc(j);
end;
finally
sl.free;
end;
//für das array und fürs weiterkommen und für die txt
if (nochr=true)then
begin
inc(aerg);
reset(f);
writeln(i);
closefile(f);
end;
statusbar1.Panels[4].Text:= 'Benötigte Zeit: ' + timetostr(time-zeit);
// statusbar1.Panels[3].Text:= 'Dargest. Ergebnisse: '+inttostr(aserg);
statusbar1.Panels[2].Text:= 'Ergebnisse: '+inttostr(aerg);
statusbar1.Panels[1].Text:= 'Zahl: ' +inttostr(i);
statusbar1.Panels[5].Text:= Format('%f', [aerg/i*100])+'% Erg.';
application.ProcessMessages;
if abbruch = true then
begin
statusbar1.Panels[5].Text:= Format('%f', [aerg/i*100])+'% Erg.';
j:=aerg+1;
i:=strtoint64(edit7.Text)+1;
end;
i:=i+2;
j := 0;
end;
end;
Erklärungen: edit7 ist der Enwert
manche Variablen habe ich nicht als lokale Variable sondern als übergeordnete.
Zitat:
Gibt es einen Grund, warum du uns die genaue Fehlermeldung verschiegen hast?
Der Fehler wechselt machmal, wenn ich was verändere.
Zur Zeit gibt er diesen reizenden Fehler aus: (Wie bind ich denn hier Bilder ein, anscheinend granicht):
"Im Projekt mathematik.exe ist eine
Exception der Klasse EAccessViolation aufgetreten. Medlung: 'Zugriffsverletztung bei adresse 00000000. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzten."
Zitat:
Naja vermutlich ist es genau diese Schleife...
Ja vieleicht, aber letztens noch hat er bei der
Exception immer die 2. Schleife mit dem j als Variable makiert. Jetzt makiert er nichts mehr.