Ansi String auf buchstaben testen

Hallo ich hab ein kleines problem und zwar benutze ich den borland c++ builder um kleine einfache anwendungen zu schreiben.

Ich wandle dabei auch ab und zu ansi Strings in zahlen um.

Mein Problem: Wenn ich in das betreffende edit feld buchstaben eintippe schmiert das program mir ab.

Meine Frage: wie kann ich überprüfen ob in dem ansi string im edit feld zahlen oder buchstaben stehen.

Persönlich hab ich schon versucht mit try catch wenigstens zu verhindern das das programm abstürtzt aber das scheint nicht richtig zu funktionieren.
 
zeig am besten mal den code, den du zum umwandeln nutzt. da dürfte das problem liegen. denn _eigentlich_ dürfte da wenig passieren, selbst wenn buchstaben drin sind.
 
hmm, naja,

nutzt du eine standard funktion zum umwandeln?
oder hast du die funktion selber geschrieben?

normalerweise brauchst du nur zeichenweise durch den string gehen, und alles löschen, was nicht zwischen ord(0) und ord(9) liegt.
 
ich hab den code zwar grad nicht hier aber ich zeig mal wie ich das Umwandle.

Edit1->Text.ToDouble();

Damit hol ich mir immer die double zahl aus dem edit feld wenn da aber buchstaben drin sind schmiert das proggramm ab.
 
ja, nee alles klar: ToDouble() lösst eine "Out of Range" oder so Exception aus, die musst du ganz richtig mit deinem try catch block abfangen. poste den mal bitte.
 
so hab die sache mit ToDouble() nicht hier aber der gleiche fehler tritt auch bei ToInt() auf.

int i=0,iTmp;
try
{
iTmp=Edit1->Text.ToInt();
}
catch(...)
{
Application->MessageBox("Falsche Eingabe","Fehler",MB_OK);
}
while(iTmp&&(iTmp%2==0))
{
iTmp/=2;
i++;
}

Edit2->Text=IntToStr(i);

Ich bin noch sehr ungeübt in der verwendung von try catch vieleicht mach ich nur igendwas falsch.

edit: Hab herausgefunden warum es nicht klappte. der borland c++ builder debugger hat das immer abgefangen bevor das try catch die exeption auffangen konnte debugger ausgemacht und es läuft
 
Zurück
Oben