Einzelnen Beitrag anzeigen

theodp

Registriert seit: 19. Dez 2008
8 Beiträge
 
#5

Re: [Linux] Dateigröße ermitteln mit Lazarus

  Alt 20. Jun 2009, 22:37
Zitat von himitsu:
weil das eine WinAPI ist und unter Linux nicht existiert
Wie kommst du denn auf die Idee?
FileUtil ist Cross-Platform und diese Fkt. auch.

Delphi-Quellcode:
function FileSize(const Filename: string): int64;
{$IFDEF Unix}
var
  st: baseunix.stat;
{$ELSE}
var
  FileInfo: TSearchRec;
{$ENDIF}
begin
  {$IFDEF Unix}
  if not fpstat(pointer(Filename),st)>=0 then
    exit(-1);
  Result:=st.st_size;
  {$ELSE}
  {$IFDEF WINCE}
  FileInfo.Name:=UTF8Decode(Filename);
  {$ELSE}
  FileInfo.Name:=UTF8ToSys(Filename);
  {$ENDIF}
  FileInfo.FindHandle:=Windows.FindFirstFile(Windows.LPTSTR(FileInfo.Name),FileInfo.FindData);
  if FileInfo.FindHandle=Windows.Invalid_Handle_value then begin
    Result:=-1;
    exit;
  end;
  Result:=(int64(FileInfo.FindData.nFileSizeHigh) shl 32)+FileInfo.FindData.nFileSizeLow;
  Windows.FindClose(FileInfo.FindHandle);
  {$ENDIF}
end;
  Mit Zitat antworten Zitat