Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Versuch hinter dem Dateiende zu lesen

  Alt 13. Jun 2012, 14:09
Ich glaube da ist selbst FileSize() in Verbindung mit der For-Schleife nicht optimal (außer wenn [in seinem Fall] data nur 1 Byte groß ist)

per EOF(Datei) kannst du gucken, ob das Ende erreicht wurde. Da man die Anzahl der Lesebefehle nicht kennt, verwendet man nicht die inidizerte Schleife (for i) sondern eine
"einfachere". Falls die Datei (IMMER) aus mindestens einem Datensatz besteht, so kann man dies mit der repeat until Schleife machen.
Ansonsten nimmt man die While Do Schleife

Beispielcodefetzen:

Delphi-Quellcode:
  AssignFile(MeineDatei, DateiName);
  {$I-}
  Reset(MeineDatei);
  {$I+}
  if IOResult <> NO_ERROR then // Datei existiert nicht, neu anlegen // NO_ERROR = 0
    ReWrite(MeineDatei);

  while not EOF(MeineDatei) do
  begin
    Read(MeineDatei, DatenSatz);
    FügeDatenSatzInZbListe(DatenSatz);
  end;
Im obrigen Beispiel ist die Position vom FilePointer auf 0 (beim Öffnen einer Datei immer 0); falls die Datei jedoch offen war und Dateioperationen durchgeführt wurden, muss dies nicht der Fall sein, deshalb eignet sich ein Seek(MeineDatei, 0) eventuell.
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat