Problem bei Prüfung AnsiString oder Integer
-
Moin moin,
ich habe ein Problem. Ich habe eine AnsiString-Variable (z.B. Inhalt "1030" oder "leer"). Nun möchte ich herausfinden ob die Variable eine Zahl enthält oder einen Text.
Hatte mir erts gedacht, dass es ganz einfach wäre, wenn ich mit StrToInt arbeite und mir die Funktion einen NULL-Zeiger zurück gibt, wenn es keine Zahl ist.
Da lag ich im Irrtum, da hier dann eine Exception ausgelöst wird.Nun ist meine Frage, wie ich prüfen kann, ob meine Variable eine Zahl oder einen Text beinhaltet? Bitte um einen kleinen Quelltexthinweis.
Dachte erst, ich könnte es wie folgt lösen:... // AnsiString-Variable asPrüfString // Prüfung ob ertes Zeichen des Strings eine Zahl ist if (isdigit(asPrüfString.operator [](0)) !=0) { ...
Leider war das nicht der richtige ansatz, da mein Compiler (Borland 2007 c++ RAD Studio) dabei streikt.
Kann ich auch verstehen.Bitte um Hilfe.
Danke
-
Hallo
radian schrieb:
mir die Funktion einen NULL-Zeiger zurück gibt
Wie kommst du darauf? Der Rückgabetyp der Funktion ist int. Wo soll da ein Zeiger herkommen?
Da lag ich im Irrtum, da hier dann eine Exception ausgelöst wird.
Wie es ja auch in der Doku zur Funktion erklärt wird.
Es gibt zwei einfache Lösungen :
AnsiString Text = ...; int Zahl; try { Zahl = StrToInt(Text); } catch(...) { Zahl = 0; }
Anmerkung : Die Exception wird zwar korrekt abgefangen, im Debug-Modus von der IDE trotzdem angezeigt. Aber nicht im Betrieb ohne IDE.
Oder :
AnsiString Text = ...; int Zahl = StrToIntDef(Text, 0);
bis bald
akari
-
Ich danke dir arkari. Das ist sehr nett.
Ich werde mich gleich mal daran machen.
Meine Hilfe ist defekt. Muss das Develoer Studio neu installieren oder die Hilfe irgendwie wieder in Gang setzen.
-
Hallo,
Das hier
if (isdigit(asPrüfString.operator [](0)) !=0)
ist falsch, da die Indizierung von AnsiString bei 1 und nicht bei 0 anfängt. So würde es gehen
if (isdigit(asPrüfString[1]) !=0)
Der operator-syntax ist auch unnötig kompliziert.
-
Auch dir danke ich für die Erklärung Braunstein
Es ist immer gut, wenn man etwas mehr erfährt.