![]() |
[Linux] Dateigröße ermitteln mit Lazarus
Was unter Windows kinderleicht ist, stellt sich unter Linux als wahre Herausforderung raus.
Ich würde gerne die Größe einer Datei ermitteln, weiß aber nicht wie. Hat einer dafür eine Lösung? :) |
Re: [Linux] Dateigröße ermitteln mit Lazarus
Du kannst entweder die entsprechende Linux API verwenden (
![]()
Delphi-Quellcode:
Alternative ohne die Datei wirklich zu öffnen basierend auf dem Standard Pascal Befehlssatz:
function GetFileSize(FileName : string) : Integer;
var f : file; OldFileMode : Integer; begin OldFileMode := FileMode; FileMode := 0; AssignFile(f, FileName); Reset(f, 1); Result := FileSize(f); CloseFile(f); FileMode := OldFileMode; end;
Delphi-Quellcode:
Fehlerhandling darf der Threadersteller selbst bauen.
function GetFileSizeWithoutOpening(FileName : string) : Int64;
var SearchRecord : TSearchRec; begin if FindFirst(FileName, faAnyFile, SearchRecord) = 0 then begin Result := SearchRecord.Size; FindClose(SearchRecord); end else Result := 0; end; |
Re: [Linux] Dateigröße ermitteln mit Lazarus
Warum nicht einfach
function FileSize(const Filename: string): int64; in FileUtil ? |
Re: [Linux] Dateigröße ermitteln mit Lazarus
Zitat:
wegen des Standards :angel:
Code:
function GetFileSizeWithoutOpening(FileName : string) : Int64;
begin ... else Result := [color=#ff0000]-1[/color]; |
Re: [Linux] Dateigröße ermitteln mit Lazarus
Zitat:
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; |
Re: [Linux] Dateigröße ermitteln mit Lazarus
Notfalls kannst du auch noch über TFileStream gehen....
|
Re: [Linux] Dateigröße ermitteln mit Lazarus
Oder df aufrufen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz