![]() |
Re: Textzeile in Txt auslesen
Ja, könnte sein dass mit den Variablenwerten mein Fehler liegt. Ich probier mal weiter.
Was macht reset? Ich hab gelesen es würde eine Datei öffnen. Frage: Was öffnet denn eine Datei damit man im Quellcode reinschreiben kann??? |
Re: Textzeile in Txt auslesen
Zitat:
auch würde es reichen wenn du die Datei nur einmal ladest und nicht in jedem Durchgang. Würde es so vorschlagen
Delphi-Quellcode:
Irgendwas mußt Du mit diesem j schon noch machen, sonst hast Du eine Endlosschleife
procedure TForm1.Button3Click(Sender: TObject);
const CFileName = 'E:\Delphi\Mathematik\Aufgelistete Primzahlen.txt'; var sl: TStringList; f:textfile; j,aerg: integer; begin j:=0; assignfile(f, CFileName); rewrite(f); write(f, '2'); closefile(f); sl := TStringList.Create; try sl.loadfromfile(CFileName); while ((j < aerg) and (j < sl.count)) do begin primzahl:=strtoint64(sl[j]); j := <...> end; finally sl.free; end; end; |
Re: Textzeile in Txt auslesen
nebenbei hast du da eine nette Endlosschleife, da du werder j noch aerg veränderst... ich nehme an, du willst j jedesmal um eins erhöhen? das geht am Besten mit inc(j) oder du machst eine for-Schleife...
|
Re: Textzeile in Txt auslesen
Zitat:
Das habe ich vorher eh auch schon dazugeschrieben und durch das j:= <...> angedeutet. Ein weiteres Problem besteht sicher durch die fehlende Initialisierung von aerg... |
Re: Textzeile in Txt auslesen
Das ist alles nicht das Problem. Das habe ich alles im hier aufgefürten Code weggelassen,(hab ich geschrieben) da es die übersichtlichkeit erhöht. Wenn es euch interessiert: Ich habe auch noch eine Schleife über diese gestülpt, in der allerdings nichts relevantes passiert. Es ist weder eine nicht deklarierte Variable (was der Compiler zweifelslos gemeldet hätte), noch ist es eine Endlosschleife oder ähnliches.
|
Re: Textzeile in Txt auslesen
Naja vermutlich ist es genau diese Schleife...
|
Re: Textzeile in Txt auslesen
Obwohl dein Code schon korrigiert wurde:
Zitat:
|
Re: Textzeile in Txt auslesen
Ich wäre überhaupt dafür mal die ganze Methode zu sehen und nicht nur die angeblich relevanten Teile. Wenns wirklich lang ist vielleicht als Anhang. Wird sonst ja doch nur ein Raten im Nebel. Man weiß ja auch nicht wo diese Schleife die über dem gesamten Code sein soll angeordnet ist...
|
Re: Textzeile in Txt auslesen
Der code:
Code:
Erklärungen: edit7 ist der Enwert
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; manche Variablen habe ich nicht als lokale Variable sondern als übergeordnete. Zitat:
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:
|
Re: Textzeile in Txt auslesen
ganz klar du gibst Deine ausserhalb der Schleife erzeugten TStringList frei, damit ist das Object zerstört und beim neuerlichen zugriff darauf hast Du eine AccessViolation was nicht anders zu erwarten ist.
Gib die Liste erst am Ende deiner Procedure ausserhalb der Schleifen frei. Um sie zu leeren kannst Du die Methode Clear der StringListe verwenden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz