@DiKey11 - powiedz, jakim cudem konwersja liczby 400
jako łańcucha ma się nie powieść..? To jest wręcz niemożliwe - RTL aż tak zabugowany nie jest; Jeśli jesteś w 100% pewien, że konwertowanym łańcuchem jest poprawna liczba 400
, to na pewno nie jest winna sama funkcja StrToInt, ale kodu powodującego błąd (który byłby dowodem na bugi w funkcji) nie podałeś, więc nikt nie będzie raczej zgadywał przyczyny wyjątku; Dodatkowo można śmiało napisać, że bez względu na to jak dany łańcuch został utworzony i skąd on pochodzi (czy to z parametrów, czy z kontrolek) funkcja zadziała prawidłowo, jeśli dany łańcuch faktycznie reprezentuje poprawną wartość liczby typu Integer;
Poza tym, jeśli dostajesz wyjątek, to po prostu przeklej jego treść bez własnoręcznego tłumaczenia; Bo to co podałeś:
" 210000 is not a valid integer value.
sugeruje, że przed liczbą stoi biały znak, który na pewno nie powoduje wyjątku; Funkcja konwertująca łańcuch na liczbę usuwa białe znak przed samą konwersją, więc choćby było dwadzieścia spacji przed liczbą to nie spowoduje to błędu; Ale tylko przed liczbą, bo przycinanie łańcucha obejmuje jedynie białe znaki stojące przed nią - jeśli po niej także występują, próba konwersji zakończy się wyjątkiem EConvertError
, np.: ''210000 ' is not a valid interer value';
DiKey11 napisał(a)
@olesio, jak wpisywałem samo 400 nie kompilowało i zwracało błąd że niewłaściwe typy String ald Integer
A czy przypadkiem to nie był taki błąd - Incompatible types: 'Integer' and 'String'
? Obstawiam, że pomyliłeś StrToInt z IntToStr.