Esto me funciona con fichero de más de 3gb (el primero que he encontrado por mi disco):
Código Delphi
[-]var
Size:Int64;
begin
if FileExists(edtFileSize1.Text) then begin
Size := Self.GetFileSize(edtFileSize1.Text);
end;
Y con este procedimiento puedes cambiarlo a diferentes unidades:
Código Delphi
[-]
procedure TFormMain.ConvertFileSizes(Size:Int64; sizeKBouble=0; sizeMBouble=0);
begin
edtbytes.Text := IntToStr(Size) + ' b';
sizeKB := (Size / 1024);
edtKB.Text := FloatToStrF(SizeKB, ffFixed, 18 ,2) + ' KB';
SizeMB := (Size / 1048576);
edtMB.Text := FloatToStrF(SizeMB, ffFixed, 18 ,2) + ' MB';
edtGB.Text := FloatToStrF((Size / 1073741824), ffFixed, 18 ,2) + ' GB';
end;