IsInteger ohne Exception ?



  • du koenntest dir's ja haendisch schreiben: den String Zeichen fuer Zeichen durchgehen und schauen ob das jeweilige char numerisch ist.



  • Blue-Tiger schrieb:

    du koenntest dir's ja haendisch schreiben

    Ich dachte immer die Funktionen gäbe es dafür, damit man sowas nicht machen muss? Bei Integer geht das ja noch,
    aber spätestens wenn man Fließkommazahlen selbst erkennen will, sieht die Sache nicht mehr so einfach aus.
    Da verlass ich mich lieber auf bewährte Funktionen, als auf mein eigenes (unvollständiges) Können.

    Gruß,

    Alexander



  • Wenns nur um die Entwicklung geht: Du kannst in der IDE einzelne Exceptions ausschalten... Hab aber leider grad keinen BCB da und kann dir deshalb auch nicht grad sagen in welchem Tab der Optionen das jetzt war.



  • Tools -> Debugger Optionen -> Language Exceptions

    Gruß Alex



  • Hallo,

    TryStrToInt
    

    Beschreibung

    TryStrToInt konvertiert den String S, der eine Zahl mit dem Typ Integer in Dezimal- oder Hexadezimalschreibweise repräsentiert, und weist das Ergebnis Value zu. Wenn S keine gültige Zahl repräsentiert, gibt TryStrToInt false, andernfalls true zurück.

    Nash



  • Alexander Kempf schrieb:

    Im BCB 6 gibt es noch TryStrToInt(), das ohne Default-Wert arbeitet.

    Nash schrieb:

    TryStrToInt
    

    (...)

    Was ist jetzt dabei die neue Erkenntnis?

    Gruß,

    Alexander



  • Probiers mal so: (wenn int, dann atoi). Falsche Eingaben werden ignoriert, allerdings muss man bei float "." statt "," verwenden.

    const float a=12.3948;
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      float b=a/(atof(Edit1->Text.c_str()));
      Edit2->Text=FloatToStr(b);
    }
    


  • Ach herje,
    natürlich sollte man nicht durch eine zurückgegebene Null dividieren. Sorry!!!



  • So ist's besser:

    const float a=12.3948;
    float b=atof(Edit1->Text.c_str());
      if (b==0)
      {
       Edit2->Text="Fehler";
      }
      else
      {
       Edit2->Text=a/b;
      }
    

    Dann kann man alles eingeben, ohne das ein Fehlerfenster kommt.



  • Hallo,

    Alexander Kempf schrieb:

    Alexander Kempf schrieb:

    Im BCB 6 gibt es noch TryStrToInt(), das ohne Default-Wert arbeitet.

    Nash schrieb:

    TryStrToInt
    

    (...)

    Was ist jetzt dabei die neue Erkenntnis?

    Gruß,

    Alexander

    Hatte ich überlesen...
    Kann ja mal passieren.

    Nash


Anmelden zum Antworten