IMHO sollte es reichen, Size nach LongWord zu casten, damit können Werte bis 2^32-1 dargestellt werden (entspricht 4GB). Ansonsten sollte man Int64 verwenden (falls die Datei noch größer ist).
Hier mal eine Funktion, die den negativen Wert in die richtige Entsprechung umrechnet:
Delphi-Quellcode:
function RealeGroesse(aSize: LongInt): Longword;
begin
if aSize>=0 then Result:= aSize
else Result:= 2147483647 + (aSize+2147483648);
end;
MfG
Binärbaum