Home » Tipps & Tricks » Dateien/Verzeichnisse » Dateieigenschaften » Größe einer Datei ermitteln

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;