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

    for(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ß
    ms

    Das 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


Anmelden zum Antworten