ERROR przy wartościach >1000 'is not a valid floating value'

0

Witam!

Już wcześniej pisałem na ten tam temacie, ale jak ktoś zauważył trzeba założyć nowy temat. Więc mam mały problem z wartościami >1000 który postanowiłem zobrazować tym programikiem:

procedure TForm1.Button1Click(Sender: TObject);
var X : REAL;
begin
X := StrToFloat(Edit7.text);
X := X*2;
Edit7.Text := FloatToStrF(X, ffNumber, 5, 3);
end;
 

Tworzę okno Edit oraz Button, po kliknięciu na button wartość w okienku jest mnożona razy dwa. Wszystko jest fajnie dla wartości mniejszych niż 1000. Wpisujemy 2 klik mamy 4 klik mamy 8, jednak gdy wpiszemy wartość 600 klik mamy 1 200 jednak po następnym kliknięciu wyskakuje error:

user image

Gdzie leży błąd?

3

Błąd leży w formatowaniu liczb; dla funkcji StrToFloat ta liczba:
1 200,000 jest błędna.
Musiałbyś pozbyć się spacji oraz może zmienić DecimalSeparator na kropkę.

0

W sumie tyle to ja się domyśliłem, że coś nie tak przede wszystkim ze spacją... Jednak może mógłbyś mi podpowiedzieć na podanym przeze mnie przykładzie jak to poprawić?

2

X := StrToFloat(StringReplace(StringReplace(StringReplace(Edit7.text,' ','',[rfReplaceAll]),'.',DecimalSepartor,[]),',',DecimalSepartor,[]));

1

Serdecznie dziękuje za pomoc;) Może powiem jak rozwiązałem swój problem... CurrToStrF

 Edit7.Text := FloatToStrF(X, ffNumber, 5, 3);

tą linijkę zmodyfikowałem w teraz wydaje się banalny sposób

 Edit7.Text := FloatToStrF(X, ffGeneral, 5, 3);

Teraz liczba nawet duża jest wypisywana po prostu bez spacji i nie ma problemu z ponownym jej podporządkowaniem pod floata;)

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