AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Textzeile in Txt auslesen

Ein Thema von Alexander Roth · begonnen am 10. Jul 2004 · letzter Beitrag vom 26. Jul 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Textzeile in Txt auslesen

  Alt 16. Jul 2004, 07:43
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???
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Textzeile in Txt auslesen

  Alt 16. Jul 2004, 08:31
Zitat von Alexander Roth:
Ja gut, ich habs jetzt umgestellt, klappt aber trotzdem noch nicht. Der Computer hat nun einen seiner anderen Fehler ausgespuckt beim ausführen.
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var sl: TStringList;
    f:textfile;

begin

assignfile(f, 'E:\Delphi\Mathematik\Aufgelistete Primzahlen.txt');
rewrite(f);
write(f, '2');
closefile(f);
sl := TStringList.Create;

    while j < aerg do
      begin
        sl.loadfromfile('E:\Delphi\Mathematik\Aufgelistete Primzahlen.txt');
        primzahl:=strtoint64(sl[j]);
        sl.free;
      end;
end;
Das kann ja auch gar nicht funktionieren! Du gibst innerhalb der Schleife die StringListe wieder frei.
auch würde es reichen wenn du die Datei nur einmal ladest und nicht in jedem Durchgang.

Würde es so vorschlagen


Delphi-Quellcode:
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;
Irgendwas mußt Du mit diesem j schon noch machen, sonst hast Du eine Endlosschleife
Günter
  Mit Zitat antworten Zitat
Rackergen2

Registriert seit: 13. Jul 2004
99 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Textzeile in Txt auslesen

  Alt 16. Jul 2004, 12:54
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...
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Textzeile in Txt auslesen

  Alt 16. Jul 2004, 16:15
Zitat von Rackergen2:
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...

Das habe ich vorher eh auch schon dazugeschrieben und durch das j:= <...> angedeutet. Ein weiteres Problem besteht sicher durch die fehlende Initialisierung von aerg...
Günter
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Textzeile in Txt auslesen

  Alt 19. Jul 2004, 14:54
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.
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Textzeile in Txt auslesen

  Alt 19. Jul 2004, 14:59
Naja vermutlich ist es genau diese Schleife...
Günter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Textzeile in Txt auslesen

  Alt 19. Jul 2004, 15:36
Obwohl dein Code schon korrigiert wurde:
Zitat von Alexander Roth:
Der Computer hat nun einen seiner anderen Fehler ausgespuckt beim ausführen.
Gibt es einen Grund, warum du uns die genaue Fehlermeldung verschiegen hast?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Textzeile in Txt auslesen

  Alt 19. Jul 2004, 16:32
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...
Günter
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Textzeile in Txt auslesen

  Alt 20. Jul 2004, 09:00
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.
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Textzeile in Txt auslesen

  Alt 20. Jul 2004, 09:35
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.
Günter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz