Ich teste gerade ein paar bei der Suchmaschine meiner Wahl gefundenen GetFileSize-Funktionen aus und vergleiche sie.
Mir ist aufgefallen, dass die FindFirst-Funktion (die erste) langsamer ist als die zweite.
Habt ihr noch bessere / schnellere?
Hier meine Funde
Delphi-Quellcode:
function GetFileSizeA(
const aFileName:
string): Int64;
var
SR: TSearchRec;
begin
Result := 0;
if not FileExists(aFileName)
then
Exit;
if FindFirst(aFileName, faAnyFile
and not faDirectory, SR) = 0
then
try
Result := SR.Size;
finally
System.SysUtils.FindClose(SR)
end;
end;
function GetFileSizeB(FileName:
string): Int64;
var
Handle: Integer;
iFileSize: Int64;
begin
iFileSize := 0;
Handle := FileOpen(FileName, fmOpenRead);
if Handle <> -1
then
try
iFileSize := iFileSize + FileSeek(
Handle, Int64(0), 2);
finally
FileClose(
Handle);
end;
Result := iFileSize;
end;
function GetFileSizeC(aFileName:
string): Int64;
var
F: TSearchRec;
begin
if FindFirst(aFileName, faAnyFile, F) = 0
then
try
Int64Rec(Result).Hi := F.FindData.nFileSizeHigh;
Int64Rec(Result).Lo := F.FindData.nFileSizeLow;
finally
System.SysUtils.FindClose(F);
end;
end;