jak wykryć problem przy konwersji formatów?

0

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ę?

0

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

<font color="red"> //-----------------------------------</span>

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...

0

DZIĘKI KRECIK

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