in Textfile zurück Anfang springen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
pschoett
Beiträge: 36
Registriert: Sa 7. Feb 2015, 11:48

in Textfile zurück Anfang springen

Beitrag von pschoett »

Hallo allerseits,
wie kann ich in einem geöffneten Textfile zurück an den Anfang springen?

Code: Alles auswählen

var
  F: Textfile;
begin
  AssignFile(F, 'datei.txt');
  Reset(F);
  While Not EOF(F) Do
  begin
    ReadLn(F, s);
    // mache irgendwas mit s
  end;
  CloseFile(F);
end;
Die einzige Möglichkeit, die ich kenne, ist ein Closefile und erneutes Reset. Wie kann ich es geschickter machen?

Peter

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: in Textfile zurück Anfang springen

Beitrag von theo »

pschoett hat geschrieben:Die einzige Möglichkeit, die ich kenne, ist ein Closefile und erneutes Reset. Wie kann ich es geschickter machen?

Was ist daran "ungeschickt?"
Ich glaube nicht, dass es für TextFile etwas anderes gibt.

Ich arbeite aber meistens mit TStringList für Text-Dateien.

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: in Textfile zurück Anfang springen

Beitrag von siro »

Du kannst mit Reset(F) jederzeit wieder an den Anfang springen
solange die Datei geöffnet ist, hab es grad ausprobiert.

Code: Alles auswählen

Begin
  AssignFile(F, 'd:\datei.txt');
  Reset(F);
  for i:=0 to 3 do begin
    ReadLn(F, s);                  // Zeile einlesen
    ListBox1.Items.Add(s);   
    Reset(F);                      // Datei auf ANFANG setzen
    ReadLn(F,s);                  // erneut die erste Zeile einlesen
    ListBox1.Items.Add(s);
  end;
  CloseFile(F);
end;                             
 


Reset_01.jpg
Reset_01.jpg (8.25 KiB) 1793 mal betrachtet


Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

pschoett
Beiträge: 36
Registriert: Sa 7. Feb 2015, 11:48

Re: in Textfile zurück Anfang springen

Beitrag von pschoett »

Danke

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: in Textfile zurück Anfang springen

Beitrag von theo »

War das die Antwort, die du gesucht hast?
Welchen Unterschied macht das?

pschoett
Beiträge: 36
Registriert: Sa 7. Feb 2015, 11:48

Re: in Textfile zurück Anfang springen

Beitrag von pschoett »

Ja, diese Antwort ist OK für mich. Ich fände Closefile und danach Reset unelegant, da ich Reset eher als Openfile verstanden hatte und nicht pauschal als GeheZuAnfangVonFile.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: in Textfile zurück Anfang springen

Beitrag von theo »

pschoett hat geschrieben:Ja, diese Antwort ist OK für mich. Ich fände Closefile und danach Reset unelegant, da ich Reset eher als Openfile verstanden hatte und nicht pauschal als GeheZuAnfangVonFile.


Naja, das ist so auch nicht dokumentiert, afaics.

In der Delphi Dokumentation steht: "If F is already open, it is first closed and then reopened. The current file position is set to the beginning of the file."

Also im Prinzip passiert genau das gleiche wie in deinem ursprünglichen Code. Du kannst dir aber u.U. eine Zeile sparen.
Da es aber für FPC so nicht dokumentiert ist, würde ich vielleicht doch nicht auf das CloseFile verzichten.

"Geschickter" oder "eleganter" finde ich es ohnehin nicht unbedingt, da es am Ende (im Idealfall) dasselbe tut. :wink:

Antworten