in Textfile zurück Anfang springen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

in Textfile zurück Anfang springen

Beitragvon pschoett » 6. Feb 2019, 14:17 in Textfile zurück Anfang springen

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
pschoett
 
Beiträge: 36
Registriert: 7. Feb 2015, 11:48

Beitragvon theo » 6. Feb 2019, 14:36 Re: in Textfile zurück Anfang springen

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.
theo
 
Beiträge: 8153
Registriert: 11. Sep 2006, 18:01

Beitragvon siro » 6. Feb 2019, 14:48 Re: in Textfile zurück Anfang springen

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


Siro
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
siro
 
Beiträge: 333
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

Beitragvon pschoett » 6. Feb 2019, 14:54 Re: in Textfile zurück Anfang springen

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

Beitragvon theo » 6. Feb 2019, 17:53 Re: in Textfile zurück Anfang springen

War das die Antwort, die du gesucht hast?
Welchen Unterschied macht das?
theo
 
Beiträge: 8153
Registriert: 11. Sep 2006, 18:01

Beitragvon pschoett » 6. Feb 2019, 19:45 Re: in Textfile zurück Anfang springen

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.
pschoett
 
Beiträge: 36
Registriert: 7. Feb 2015, 11:48

Beitragvon theo » 7. Feb 2019, 10:56 Re: in Textfile zurück Anfang springen

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:
theo
 
Beiträge: 8153
Registriert: 11. Sep 2006, 18:01

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried