Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#9

Re: FileSize nicht für Textdateien?

  Alt 7. Dez 2005, 11:04
Zitat von JPSelter:
Wieso sind Textdateien ausgeschlossen? Hat das einen logischen Grund? Wie bekomme ich alternativ die Grösse einer Textdatei?
Warum kann ich dir sagen: FileSize() der alten Dateiroutinen gibt als Grösse immer einen Wert an, der den Typ der Datei beachtet und immer die Anzahl der Elemente zurück gibt. Wenn du nun z.B. einen Record hast und einen Dateityp vom Typ des Records (File Of TRecord), dann gibt dir FileSize() an, wieviele Records in der Datei sind - also die Grösse der Datei in Bytes geteilt durch die Grösse des Records (SizeOf(TRecord)). Ist bei File Of Word und anderen Typen nicht anders und bei den Textdateien müsste er dir somit die Anzahl der Textzeilen zurück geben, aber das kann er nicht. Dafür müsste er die gesamte Textdatei scannen und die Zeilenumbrüche verarbeiten und auswerten. Auch hätten die Borländer schlecht bei einer Textdatei die Grösse in Bytes zurückgeben können, weil es zum einen dem Verhalten bei den anderen Dateitypen widerspricht und zum anderen hilft dir eine Byte Angabe nichts, wenn du abzählen willst wann denn EOF() ist, da schliesslich ein LF mal nur auf einem LF oder auch aus einem CR+LF bestehen kann und die Routinen ReadLn() automatisch beide Typen beachten aber dir keine Chance bieten herauszubekommen, wieviel Bytes denn nun für das Zeilenende "draufgingen".

Ähnliches gilt daher auch für FilePos() bei Textdateien.