Przekroczenie zakresu Int64

0

Mam następującą funkcję zwracającą wynik w GB (oblicza z bajtów)

function PoliczZyskaneMiejsce: string;
var
 a, b, suma : Int64;
begin
 a      := strtoint(SearchForm.Label_1.Caption); // np: 2166530018
 b      := strtoint(SearchForm.Label_2.Caption); // np: 10000
 suma   := a + b;
 Result :=  FloatToStrf(suma / 1024000,ffFixed,100,2) + ' MB   ' + FloatToStrf(suma / 1024000000,ffFixed,100,2) + ' GB';
end;

Pomimo zastosowania zmiennej Int64 występuje błąd:
"2166540018 is not a valid integer value", co oznacza że został przekroczony zakres, ponieważ nie może policzyć tak dużej liczby.
Czy można tutaj coś poradzić ? [soczek]

0

StrToInt zwraca wartość typu Integer, a nie Int64. Spróbuj zastosować StrToInt64, albo zrzutować wynik.

a:= StrToInt64(SearchForm.Label_1.Caption);

albo

a:= Int64(StrToInt(SearchForm.Label_1.Caption));
0

Dzięki Luc [soczek] !

function PoliczZyskaneMiejsce: string;
var
 a, b, suma : Int64;
begin
 suma := 0;
 a := StrToInt64(SearchForm.Label_UsunietoBajt.Caption);
 b := StrToInt64(SearchForm.Label_ZyskanoQC2.Caption);
 Inc(suma,a+b);
 Result :=  FloatToStrf(suma / 1024000,ffFixed,100,2) + ' MB   ' + FloatToStrf(suma / 1024000000,ffFixed,100,2) + ' GB';
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1