Efectivamente el tamaño depende de las unidades y de si es real o en disco.
También puedes usar esta función:
Código Delphi
[-]
function _GetFileSize(hFile: THandle): int64;
var
lo, hi: Cardinal;
begin
lo:= Windows.GetFileSize(hFile, @hi);
Result:= hi;
Result:= (Result shl 32) or lo;
end;
o esta:
Código Delphi
[-]
function _GetFileSize(hFile: THandle): int64;
begin
if not GetFileSizeEx(hFile, Result) then Result:= 0;
end;
Pero en ambos casos debes disponer del Handle del fichero abierto previamente.
Saludos.