Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Builder C++ - problem z atof
Forum PHP.pl > Forum > PHP
robal94
Witam!

Mam problem z konwersją z pola Edit na double. fragment kodu:
  1. double A2 = atof(Edit4->Text.c_str())*40,
  2. T2 = atof(Edit5->Text.c_str()),
  3. faz2 = atof(Edit6->Text.c_str());


i wyskakuje błąd:
"Project Wykresy.exe raised exception class EConvertError with messege "3.14" is not a valid intiger value. Process stoped..."

Czy ktoś wie dla czego?
abort
Tak na początku taki mały disclaimer: my tu rozwiązujemy problemy związane z PHP, a nie z C/C++ smile.gif
Wczytaj się w treść błędu:
"Project Wykresy.exe raised exception class EConvertError with messege "3.14" is not a valid intiger value. Process stoped..."

Drugie: ciutkę więcej kodu albo opis: w której zmiennej masz to "3.14"?
Kolejne: atof() konwertuje tekst na liczbę zmiennoprzecinkową - jesteś pewien, że wszystkie trzy zmienne, którym przypisujesz wartości przetworzone przez atof() są zadeklarowane jako zmiennoprzecinkowe?
robal94
przepraszam za c++, jakoś tak z rozpędu przy dużym problemie napisałem na tym forum. Wszystkie są zdeklarowane jako double, 3.14 to ma być T2 z Edit5
abort
Sorry, ale jak dla mnie to nie tu jest problem. Może T2 przekazujesz gdzieś dalej i tam jest oczekiwany int, a Ty dajesz double?
robal94
double a, a2, b, b2;
double A = atof(Edit1->Text.c_str())*40,
T = atof(Edit2->Text.c_str()),
faz = atof(Edit3->Text.c_str());

double A2 = atof(Edit4->Text.c_str())*40,
T2 = atof(Edit5->Text.c_str()),
faz2 = atof(Edit6->Text.c_str());
for(int j = 0; j <=500; j++){
Canvas->Pen->Color = clBlue;
a = j * 0.1;
a = A* sin(((6.28/(T*40))*j)+faz);
Canvas->MoveTo(90+j,180-a);
a2 = j+1 * 0.1;
a2 = A* sin(((6.28/(T*40))*j)+faz);
Canvas->LineTo(91+j,180-a2);

Canvas->Pen->Color = clRed;
b = j * 0.1;
b = A2* sin(((6.28/(T2*40))*j)+faz2);
Canvas->MoveTo(90+j,180-cool.gif;
b2 = j+1 * 0.1;
b2 = A2* sin(((6.28/(T2*40))*j)+faz2);
Canvas->LineTo(91+j,180-b2);


Canvas->Pen->Color = clGreen;
Canvas->MoveTo(90+j,180-b-a);
Canvas->LineTo(91+j,180-a2-b2);
abort
Oj, wymiękam (C znam z pisania programów na studiach na zaliczenia, ale wtedy buildera C++ jeszcze nie było).
Jedyne, co mogę Ci poradzić, to debugować za pomocą printf - systematycznie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.