Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#10

Re: Zeilen in einer Datei zählen

  Alt 20. Mai 2006, 03:44
Also, selbst wenn bei TextFile ein Fehler auftreten sollte dann ist wäre das Speicherleck jedenfalls geringer, als wenn was bei der StringList passiert (nach den obrigen Codes)

Aber man kann ja auch nochmehr an Code einsparren und die ganzen I/O-Checks weglassen
Delphi-Quellcode:
Var F: TextFile;
  Count: Integer;

Count := 0;
AssignFile(F, ...);
FileMode := fmOpenRead;
{$I-}
Reset(F);
While not EoF(F) do Begin
  ReadLn(F);
  Inc(Count);
End;
CloseFile(F);
{$I+}
If IOResult <> 0 Then Count := -1;

// Count >= 0 Count = Zeilenanzahl
// Count = -1 Fehler

Aber hast du dir mal angesehn, was TStringList.LoadFromFile macht?
Das erstellt erstmal 'nen FileStream
kopiert den Inhalt der Datei in einen String
zerlegt den großen String in kleine Strings
und fügt diese kleinen Strings in die StringListe ein ... und zwar jeden einzeln (was intern auch wieder einiges an rumcopieren verursacht)
und gibt zum schluß wieder die beiden Strings und den FileStream frei (man hat also zeitweise über das Doppelte der Dateigröße im RAM und wenn die Datei aus nur einem String besteht sogar as Dreifache
...
tja und zum Schluß muß auch alles wieder freigegeben werden
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat