Extended Gigantyczny problem

0

Witam, szukałem w sieci, ale nie znalazłem odpowiedzi na moje pytanie.

Mam w pliku liczbę np: 5.74

wczytuję ją, mnożę i wyświetlam wynik:

Y:=StrToInt('0'+Trim(Label13.Caption));
Z := strtoFloat(s) * Y;
Label75.Caption := FloatToStr(Z);

"s" To dana z tego pliku

I teraz kompiluję to i działa idealnie

Uruchamiam to na drugim komputerze

I wyrzuca mi błąd
5.74 is not a valid floating point value

Więc zmieniam 5.74 na 5,74

I działa poprawnie, jednak gdy włączam tę aplikacje na poprzednim komputerze wyrzuca błąd:
5,74 is not a valid floating point value

Pomocy, może ktoś wie jak pogodzić te dwie wartości ?

0

Poczytaj o

DecimalSeparator
0

DecimalSeparator := '.';
Natomiast ta zmienna jest zdeprecjonowana (przynajmniej w Lazarusie) i poprawna wersja to bodajże coś w rodzaju DefaultFormatSettings.DecimalSeparator :=

0

Może coś takiego zadziała :

var 
  s  : string;
  fs : TFormatSettings; 

GetLocaleFormatSettings(0, fs);
fs.DecimalSeparator := ':)';
fs.ThousandSeparator := ':)';
0

Na początku procedury wpisuje:

GetLocaleFormatSettings(0, sf);
sf.DecimalSeparator := '.';
sf.ThousandSeparator := ',';

Jednak nie daje to żadnego efektu.
Może podczas ładowania pliku muszę jakoś zdefiniować ten separator ?

2

z := StrToFloat(StringReplace(StringReplace(s, ',', DecimalSeparator, [rfReplaceAll]), '.', DecimalSeparator, [rfReplaceAll])) i czy wpiszesz przecinek czy kropkę, czy na kompie jest ustawiona kropka, gwiazdka czy wykrzyknik to i tak zadziała

0

Ok teraz "działa", bo kompiluje, tylko wyświetla mi same liczby całkowite, a separator i to co za nim pomija :)

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