Cześć,
jestem w trakcie pisania małego programu w C++ Builder. Ogólnie to polega na tym, że użytkownik podaje dane (liczby zmiennoprzecinkowe) a program przelicza i wyświetla wynik. Oprócz tego, aby nie dało się zrobić głupot jest kilka "sprawdzajek" czy wszystko jest jak należy.
Mam tam m.in. takie elementy:
//pobiera dane z pola, zmienia kropkę na przecinek, potrzebne do konwersji string do double
temp = pole->Text.c_str();
std::replace( temp.begin(), temp.end(), '.', ',');
pole -> Text = temp.c_str();
//sprawdza czy wpisane dane można konwertować do float
if( !TryStrToFloat(pole->Text, value) )
{
Error1 -> Visible = True;
pole->SetFocus();
return;
}
//jeśli dane w polach są mniejsze lub równe zero to wyrzuca błąd
if (pole1 -> Text.ToDouble() <= 0 || pole2 -> Text.ToDouble() <= 0 || pole3 -> Text.ToDouble() <= 0 || pole4 -> Text.ToDouble() <= 0 || pole5 -> Text.ToDouble() <= 0)
Error1 -> Visible = true;
Potem idą już same obliczenia a na końcu obliczone wartości wyświetlane są w polach na wyniki. Niby wszystko ładnie i ok, ale pojawia się problem. Na dwóch PC na których sprawdzałem jest ok. Program liczy jak trzeba, wszystko przechodzi itd. Natomiast na komputerze kumpla wprowadzenie liczby innej niż całkowita powoduje, że któraś "sprawdzajka" nie przechodzi i wywołuje okno Error1. Oczywiscie tak on jak i ja sprawdziliśmy na tym samym skomplikowanym exe, sprawdzałem z tymi danymi co on i było dobrze. On sprawdzał na innym pc i też śmiga. Skąd więc błąd na tym konkretnym pc?