Größe einer Datei ermitteln
Folgende Funktionen ermitteln die Größe einer Datei in Byte.
Ab Delphi 4 kann diese Funktion verwendet werden, die beliebig große Dateigrößen ermitteln kann.
function GetFileSizeEx(const AFileName: string): Int64; var F: TSearchRec; begin Result := -1; if FindFirst(AFileName, faAnyFile, F) = 0 then begin try Result := F.FindData.nFileSizeLow or (F.FindData.nFileSizeHigh shl 32); finally SysUtils.FindClose(F); end; end; end;
Der Record TSearchRec liefert die Größe nicht direkt im 64bit-Integer-Format zurück. Allerdings enthält der untergeordnete Record FindData entsprechende Informationen, woraus sich der richtige Zahlenwert bilden lässt:
F.FindData.nFileSizeLow or (F.FindData.nFileSizeHigh shl 32);
Der höherwertige Anteil wird mit „shl 32“ um 32 Bit (entspricht 4 Byte) nach links verschoben. Nun wird der niederwertige Bereich per „or“ mit dem höherwertigen Bereich verknüpft (0 or 0 = 0; 1 or 0 = 1; 0 or 1 = 1; 1 or 1 = 1). Man muss sich das ganze in der Dualdarstellung der Zahlen vorstellen.
Benutzer älterer Delphi-Versionen müssen diese Funktion verwenden, deren Grenze bei 2147483647 Byte (2 Gb) liegt.
function GetFileSizeEx(const AFileName: string): Integer; var F: TSearchRec; begin Result := -1; if FindFirst(AFileName, faAnyFile, F) = 0 then begin try Result := F.Size; finally SysUtils.FindClose(F); end; end; end;