// Wenn man die Größe einer Datei ermitteln will, ohne dieselbe zu öffnen,
// könnte man so verfahren:



// Getestet mit D4 unter WinME

function DateiGroesse(datei: string; var gross: longint): boolean; 
var 
  sr: TWin32FindData; 
  h: THandle; 
begin 
  h := FindFirstFile(PChar(datei), sr); 
  result := (h <> INVALID_HANDLE_VALUE) and (sr.dwFileAttributes and 
    FILE_ATTRIBUTE_DIRECTORY = 0); 
  if result then 
    gross := (sr.nFileSizeHigh * MAXDWORD) + sr.nFileSizeLow; 
  windows.FindClose(h); 
end; 
 
// Beispielaufruf 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  gr: longint; 
begin 
  if DateiGroesse('c:\autogramm.bmp', gr) 
    then showmessage(inttostr(round(gr / 1024 + 0.5)) + ' KB') 
  else showmessage('Fehler'); 
end;

//--------------------------------------------------------------------


// Wenn Dateigrößen über 2 GB liegen, dann so:

// Getestet mit D4 unter XP

function GetFileSize(const FileName: string; var gross: int64): boolean; 
var 
  h: THandle; 
  sr: TWin32FindData; 
begin 
  gross := 0; 
  h := FindFirstFile(PChar(FileName), sr); 
  result := (h <> INVALID_HANDLE_VALUE) and (sr.dwFileAttributes and 
    FILE_ATTRIBUTE_DIRECTORY = 0); 
  if result then begin 
    Int64Rec(gross).Lo := sr.nFileSizeLow; 
    Int64Rec(gross).Hi := sr.nFileSizeHigh; 
    Windows.FindClose(h); 
  end; 
end; 
 
 
// Beispielaufruf 
 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  gr: int64; 
begin 
  if GetFileSize('c:\hiberfil.sys', gr) 
    then showmessage(Formatfloat('#,##0 KB', (gr / 1024 + 0.5))) 
  else showmessage('Fehler'); 
end;



Zugriffe seit 6.9.2001 auf Delphi-Ecke