Pytanko jest takie:
mam ciąg znków, który powinien się składać tylko z liczb i chcę go przekonwertować ze Stringa na Double, ale jak się zabezpieczyć gdy w tym ciągu znaków pojawi się literka i rozwali mi konwersję?
Można to zrobić na kilka sposobów...
Można wyszukiwać, czy w stringu nie znajduje się nic innegi niż liczba, znak minus, kropka (lub ew. przecinek). Wszystko to można zrobić choćby tak:
[code]double liczba = 0;
String string = Edit1->Text;
char *tablica = "1234567890-,.";
bool test = true;
for(int i=1; i<string.Length()+1; i++)
{
bool test_in = false;
for(int j=0; j<strlen(tablica); j++)
if(string[i]==tablica[j]) test_in = true;
if(test_in == false)
{
test = false;
break;
}
}
if(test == false)
{
ShowMessage("!!!BŁĄD!! w podanym texcie znajdują się inne znaki niż dopuszczalne!");
return;
}
else
{
liczba = StrToCurr(string);
}[/code]
Trzeba by to trochę jeszcze zoptymalizować, ale brakło mi czasu i chęci
Tak mi coś teraz przychodzi do głowy z konwersją String na Int:
[code]
try
{
int liczba = Edit1->Text.ToInt();
}
catch(EConvertError&)
{
ShowMessage("!!!BŁĄD!!! - błędne znaki!");
}
[/code]
NIe wiem, czy zadziała bo pisałem z pamięcie, ale jeśli tak to wiem, na pewno, że zadziała z int, natomiast nie próbowałem nigdy z double...
DZIĘKI KRECIK