moin moin,
Zitat von
Christian Seehase:
Was das Handling angeht:
TFileStream kapselt die von Dir genannten Funktionen, die wiederum nur die zugrunde liegenden
API-Funktionen kapseln.
Wenn ich jetzt, beispielsweise, die Dateigrösse benötige, finde ich es praktischer die Eigenschaft Size von TFileStream zu benutzen, als sie mir mit Hilfe einer weiteren Funktion auszulesen.
Richtig, allerdings finde ich die Fehlerbehandlung in der Klasse ("TFileStream") nicht sehr gut gelöst. Wie fängt man beispielsweise einen Fehler beim Öffnen einer Datei ab, wenn sie sich nicht öffnen läßt?. Das pandant zu FileOpen() wäre bei der Klasse "TFileStream" die Methode Create() und genau hier könnte es knallen, wenn die Datei bereits geöffnet ist. Was macht man also: Man verschachtelt das ganze mit try..except und try..finally? Oder du zeigst mir, wie man es anders lösen könnte.
PS: Hier noch eine Funktion die Hagen mal gepostet hatte, um Dateigrößen < 4 GB zu lesen:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Größe einer Datei ermitteln (auch Dateien über 4 GB)
////////////////////////////////////////////////////////////////////////////////
function GetFileSize(const FileName: String): Int64;
var FileHandle: Cardinal; var Data: WIN32_FIND_DATA;
begin
Result := -1;
FileHandle := FindFirstFile(PChar(FileName), Data);
try
if FileHandle > 0 then
begin
Int64Rec(Result).Hi := Data.nFileSizeHigh;
Int64Rec(Result).Lo := Data.nFileSizeLow;
end;
finally Windows.FindClose(FileHandle);
end;
end;