Extended Gigantyczny problem

Extended Gigantyczny problem
DK
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:64
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:

Kopiuj
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 ?

Młody
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 10 lat
  • Postów:418
0

Poczytaj o

Kopiuj
DecimalSeparator
DK
Próbowałem już tego, ale nie za bardzo mi pomogło Nie wiem, może źle tego użyłem
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

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


Młody
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 10 lat
  • Postów:418
0

Może coś takiego zadziała :

Kopiuj
var 
  s  : string;
  fs : TFormatSettings; 

GetLocaleFormatSettings(0, fs);
fs.DecimalSeparator := ':)';
fs.ThousandSeparator := ':)';
edytowany 1x, ostatnio: Młody
DK
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:64
0

Na początku procedury wpisuje:

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

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

abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
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


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 1x, ostatnio: abrakadaber
DK
hmm, tylko nie mam pojęcia, czemu się nie kompiluje i pokazuje 2 błędy "No enough parameters" wskazuąc na DecimalSeparator
DK
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 12 lat
  • Postów:64
0

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

DK
Ok, dzięki za szybką pomoc, poradziłem sobie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.