![]() |
Dateigröße ermitteln ohne Datei zu öffnen
Hi,
ich suche die möglichkeit die Dateigröße zu ermitteln ohne die Datei zu öffnen. In der Suche habe ich nichts gefunden und ich kenne bislang nur diese möglichkeit
Delphi-Quellcode:
var F: File
begin Assign(F,FileListBox1.FileName); Reset(F); Label1.Caption:=IntToStr(FileSize(F)); ... end; |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Hallo Robin,
so könnte das funktionieren:
Delphi-Quellcode:
Grüße vom marabu
function FileSize(fn: TFileName): Int64;
var sr: TSearchRec; begin if FindFirst(fn, faArchive, sr) = 0 then begin with sr.FindData do Result := nFileSizeHigh shl 32 + nFileSizeLow; FindClose(sr); end; end; |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Zwei kleine Korrekturen:
1.) Falls die Datei nicht existiert, ist das Funktionsergebnis undefiniert. 2.) Das Schieben eines 32-Bit-Wertes um 32 Bits nach links löscht eigentlich nur den Wert. :wink: Mein Vorschlag:
Delphi-Quellcode:
function FileSize(fn: TFileName): Int64;
var sr: TSearchRec; begin if FindFirst(fn, faArchive, sr) = 0 then begin with sr.FindData do Result := Int64(nFileSizeHigh) shl 32 + nFileSizeLow; FindClose(sr); end else Result := 0; end; |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "VCL / WinForms / Controls" nach "Object-Pascal / Delphi-Language" verschoben.
Ist hier besser aufgehoben. |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Danke für das Korrekturlesen. Als Result verwende ich dann lieber -1, da 0 eine legitime Größe für eine existierende Datei ist.
Schönes Wochenende marabu |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Stimmt, so ist's besser :thumb:
Gruß, Hawkeye |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Meine Version:
Delphi-Quellcode:
function GetFileSize(szFile: PChar): Int64;
var fFile : THandle; wfd : TWIN32FINDDATA; begin result := 0; if not FileExists(szFile) then exit; fFile := FindFirstfile(pchar(szFile), wfd); if fFile = INVALID_HANDLE_VALUE then exit; result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow; windows.FindClose(fFile); end; |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Hallo Michael, du non-VCL-Fetischist,
wenn du FileExists() raus nimmst und Result mit -1 initialisierst (siehe oben), dann nenne ich deinen Code elegant. Freundliche Grüße vom marabu |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Zitat:
|
Re: Dateigröße ermitteln ohne Datei zu öffnen
weil fileexists in der sysutils steht und die nicht nonVCL-kompatibel ist ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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