Testen ob Eingabe in TEdit Zahlen sind



  • Ich mache grade ein kleines Progg zum Umrechnen von Währungen, und nun möchte ich irgendwie per if & else, bevor das Programm durch falsche Angaben abstürzt, prüfen ob die Eingabe auch wirklich Zahlen sind und im falle einer ungültigen Eingabe eine Fehlermeldung ausgeben. Das mit der Fehlermeldung bekomme ich selber hin.

    1 Editfeld für den Kurs, 2 Editfelder für € und $ zur Ein-, und nach dem Berechnen zur Ausgabe, 1 Button zum Berechnen.

    Und wie mach ich es möglich dass ich auch Kommazahlen eingeben kann? Ich arbeite momentan mit ->Text.ToInt()

    danke



  • Ich rolls mal von hinten auf...

    Und wie mach ich es möglich dass ich auch Kommazahlen eingeben kann? Ich arbeite momentan mit ->Text.ToInt()

    Mit ->Text.ToDouble()

    bevor das Programm durch falsche Angaben abstürzt, prüfen ob die Eingabe auch wirklich Zahlen sind und im falle einer ungültigen Eingabe eine Fehlermeldung ausgeben

    das kannst du mithilfe von try/catch machen

    Kannst aber von vornherrein festlegen dass nur Zahlen und Komma gehen

    // Zeiger auf Sender casten:
      TEdit* pEdit = dynamic_cast<TEdit*>(Sender);
      // Falls Punkt oder Komma eingegeben und noch kein Dezimaltrennzeichen
      // im Eingabestring vorhanden, Dezimaltrennzeichen einsetzen:
      if((Key == '.' || Key == ',') && !pEdit -> Text.Pos(DecimalSeparator))
        Key = DecimalSeparator;
      // Zeichen verwerfen, falls weder Minus-Zeichen am Anfang des
      // Eingabestrings noch eine Ziffer eingegeben:
      else if((Key == '-' && (pEdit->SelStart || pEdit->Text.Pos("-"))) ||
             ((Key < '0' || Key > '9') && Key != 8 && Key != '-'))
        Key = 0;
    


  • Hallo

    Man auch gleich die Eingabe auf die richtigen Zeichen beschränken, siehe hier.

    bis bald
    akari



  • Dragonfire schrieb:

    // Zeiger auf Sender casten:
      TEdit* pEdit = dynamic_cast<TEdit*>(Sender);
      // Falls Punkt oder Komma eingegeben und noch kein Dezimaltrennzeichen
      // im Eingabestring vorhanden, Dezimaltrennzeichen einsetzen:
      if((Key == '.' || Key == ',') && !pEdit -> Text.Pos(DecimalSeparator))
        Key = DecimalSeparator;
      // Zeichen verwerfen, falls weder Minus-Zeichen am Anfang des
      // Eingabestrings noch eine Ziffer eingegeben:
      else if((Key == '-' && (pEdit->SelStart || pEdit->Text.Pos("-"))) ||
             ((Key < '0' || Key > '9') && Key != 8 && Key != '-'))
        Key = 0;
    

    Verstehe ich leider gar nicht x.x .. Was meinst du mit Zeiger auf Sender casten, und könntest du den Rest evtl etwas erläutern? Z.b. !pEdit..



  • Die von Dragonfire gezeigte Codesnip muss ins
    OnKeyPress(TObject *Sender, char &Key) Ereignis des Editierfeldes

    und schon müsste klar sein wiso er auf den Sender castet.



  • VergissEs schrieb:

    Die von Dragonfire gezeigte Codesnip muss ins
    OnKeyPress(TObject *Sender, char &Key) Ereignis des Editierfeldes

    und schon müsste klar sein wiso er auf den Sender castet.

    Was ist ein Sender x.x ? Gibt es irgendwo evtl ein eBook das mir den Einstieg in Borland erleichtert? Ich arbeite grade einzelne Tuts durch und so richtig klar ist mir alles nicht ..
    danke



  • mulo schrieb:

    Gibt es irgendwo evtl ein eBook das mir den Einstieg in Borland erleichtert?

    Ja:
    http://info.borland.com/techpubs/bcppbuilder/v5/index.html



  • Auch zu empfehlen für den Einstieg sind die Seiten

    http://bcbjournal.org/bcbcaq/
    http://www.functionx.com/bcb/index.htm

    oder das eigene Tut dieser Seite
    http://bcb-tutorial.c-plusplus.net/inhalt.html


Anmelden zum Antworten