Błąd "is not a valid floating point value" – jak go rozwiązać?

0

Dopiero zaczynam swoją przygodę i tworzę prosty program obliczający kilka parametrów i mam problem ponieważ po wprowadzeniu wartości do komórki i próbie zmiany wartości tzn. usunięciu pojawia się owy błąd. Nie bardzo wiem jak mógłbym go rozwiązać

zrzut.png

0

no ale pusty ciąg nie jest liczbą więc o co chodzi?

0

Zapewne obliczenia wykonujesz gdy zmieni się zawartość pól do któych wprowadzasz liczby zmiennoprzecinkowe. Skasowanie zawartości (oraz pewnie inne sposoby edycji jak dopisanie czegoś) spowoduje wygenerowanie eventu lub innego mechanizmu który wywołuje twoje obliczenia. Ponieważ do pola edycji wprowadza się tekst (nawet jeśli to same cyfry) to jest on gdzieś konwertowany (parsowany) na wartość liczbową float. I w tym momencie pojawia się problem, bo następuje próba konwersji pustego ciagu znaków na liczbę, to jest pewnie twój komunikat. Przed konwersjanależy sprawdzić czy z pola tekstowego pobierasz liczbę.

Ale to takie wróżenie bo nie pokazałeś kodu ;)

Postanowiłem napisać jakiś pomocny komentarz, bo widzę, że ostatnie pare wątków to głownie hejty, a to w końcu dział NEWBIE i mogą padać dziwne pytania :)

2

Ja nie iem na czym polega problem, że ludzie notorycznie zamieszczają screenshoty, które wnoszą jedynie jedną linijkę tekstu.
A już zupełnie nie rozumiem, jak ktoś nie pokazuje kodu.

Generalnie problem polega na tym, że przy konwersji z TString do double następuje błąd, który powoduje rzucanie wyjątku.
Wyjątek trzeba złapać we właściwym miejscu.
W debugerze można włączyć opcję "Stop when exception is thrown" (lub coś analogicznego, nie używałem BCB przez 12 lat), więc jeśli nie wiesz gdzie jest problem, debugger może ci pomóc.

Pokaż problematyczny kod i opisz jakie są wymagania (jak według ciebie powinien działać program), to wtedy zapewne ktoś będzie w stanie pomoc.

1
MarekR22 napisał(a):

W debugerze można włączyć opcję "Stop when exception is thrown" (lub coś analogicznego, nie używałem BCB przez 12 lat), więc jeśli nie wiesz gdzie jest problem, debugger może ci pomóc.

Generalnie Builder robi tak, że w trakcie uruchamiania pod debuggerem Builder przechwytuje wyjątki i w oknie dialogowym Buildera można skoczyć do miejsca wystąpienia błędu bądź kontynuować dalej wykonywanie programu. Czasem miejscem wystąpienia wyjątku będzie jakaś biblioteka systemowa. Ale w oknie Stack Trace można skoczyć do wcześniejszych metod/funkcji z naszego kodu i będziemy wiedzieć gdzie jest błąd.

Co ważne zaleciłbym wywalenie tego starocia jakim jest Builder 6 i zainteresowanie się najnowszą darmową wersją która już jest z tego wieku.

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