String auf Hexadezimalzahlen prüfen
-
Hallo ich möchte bei einen AnsiString prüfen ob dieser NUR Hexadezimalzahlen enthält.
Ich habs so versucht:
AnsiString ListString = "0x0CT1"; //Das T ist falsch --> Exception try { StrToInt(("0x" + ListString)); } catch(...) { MessageDlg("Abbruch!\n\rDer String darf nur Zahlen enthalten!", mtInformation, TMsgDlgButtons() << mbOK , 0 ); return; }
Trotz try...catch geht der Builder geht in den Debugmodus wenn der code ausgeführt werden soll..., catch wird nicht ausgeführt, warum?
Und so:
Laut Ascii-Tabelle
0...9 = 0x30...0x39
A...F = 0x41...0x46for(int i = 1; i < 4; i++) { AnsiString ListString = "0x0CT1"; //Das T ist falsch --> Exception if(ListString .SubString(i,i) < 0x30 || ListString .SubString(i,i) > 0x39 || ListString .SubString(i,i) < 0x41 || ListString .SubString(i,i) > 0x46 ) { MessageDlg("Abbruch!\n\rDer String darf nur Zahlen enthalten!", mtInformation, TMsgDlgButtons() << mbOK , 0 ); return; } }
Die if- anweisung wird hier, anders als geplant, immer ausgeführt, auch bei gültigen Zeichen, warum??
Seht ihr meinen Denkfehler, oder kennt ihr evtl. eine bessere Lösung für mein Problem?
DANKE,...
Gruß
ms
-
Ok, in der .exe datei gehts,...
damit ist das Thema eigentlich gelöst,...
Wenn ihr allerdings nen eleganteren weg kennt, würde ich den gerne wissen,...
Gruß
ms
-
makros schrieb:
Ok, in der .exe datei gehts,...
damit ist das Thema eigentlich gelöst,...
Wenn ihr allerdings nen eleganteren weg kennt, würde ich den gerne wissen,...
Gruß
msDas mit dem try ... catch geht,...
-
Bei einer Exception wird standardmäß9g immer gestoppt, wenn das Programm innerhalb der IDE ausgeführt wird.
Kann man aber auch abstellen. Unter Tools -> Debugger Optionen -> Sprach Exceptions, kann man das für Delphi- und C++-Exceptions getrennt abstellen. Zumindest in meinem BCB 6.
-
Hi,
prüfe den String doch mit GetStringType aus der API.
Try/catch macht das sicher nicht.mfg
Peter