F.FindData.nFileSizeHigh erst auf 64 Bit vergrößern und dann schiften, denn wo sollen die Bits sonst hin?
Result := F.FindData.nFileSizeLow or (Int64(F.FindData.nFileSizeHigh) shl 32);
.
PS: solch einfache Bit-Operationen sollten keine Probleme bereten, weswegen der Resourceschutzblock unnötig wäre.
PSS:
Delphi-Quellcode:
function GetFileSizeEx(const AFileName: string): Int64;
var
F: TSearchRec;
begin
if FindFirst(AFileName, faAnyFile, F) = 0 then
begin
Int64Rec(Result).Lo := F.FindData.nFileSizeLow;
Int64Rec(Result).Hi := F.FindData.nFileSizeHigh;
SysUtils.FindClose(F);
end
else
Result := -1;
end;