Eigentlich kann man doch auch
Code:
function GetFileSize(szFile: String): Int64;
statt
Code:
function GetFileSize(szFile: PChar): Int64;
schreiben, dann muss man beim Aufruf der Funktion nich auch noch zu PChar umwandeln. Ist ja doppelt gemoppelt
Eingabe String
Delphi-Quellcode:
function GetFileSize(szFile: String): Int64;
var
fFile: THandle;
wfd: TWIN32FINDDATA;
begin
Result := -1;
fFile := FindFirstfile(PChar(szFile), wfd);
if fFile = INVALID_HANDLE_VALUE then Exit;
if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
Windows.FindClose(fFile);
end;
Und wenn man PChar vorliegen hat, dann kann man sich die Konvertierung innerhalb der Funktion sparen
Eingabe PChar
Delphi-Quellcode:
function GetFileSize(szFile: PChar): Int64;
var
fFile: THandle;
wfd: TWIN32FINDDATA;
begin
Result := -1;
fFile := FindFirstfile(szFile, wfd);
if fFile = INVALID_HANDLE_VALUE then Exit;
if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
Windows.FindClose(fFile);
end;