TextBox Eingabe überprüfen



  • Hallo,

    ich habe eine kleine Anwendung mit DB Zugriff geschrieben.

    Nun möchte ich prüfen ob bei der Eingabe in das Feld "PLZ" das richtige
    Format eingeben worden ist. Dazu habe ich folgenden Code:

    //sind es nur Ziffern?

    else

    if (Int32::TryParse(kPLZTextBox->Text,plzTemp)== false){

    MessageBox::Show("Das Format der PLZ ist ungültig!");

    e->Cancel = true;

    }
    Aber leider Funktioniert das nicht. Hat jemand einen Tipp für mich?
    Zur Info: plzTemp habe ich mit Int32 plzTemp; als Variablen
    Der Compeiler gibt auch keine Fehlermeldung aus.



  • Mach das doch so...

    Int32 postleitzahlTemp;
    
    //ist der Eintrag exakt 5 Zeichen lang?
    if(textBox1->Text->Length != 5)
    {
           MessageBox::Show("Die Postleitzahl muss 5 Ziffern lang sein!","Fehler...",MessageBoxButtons::OK,MessageBoxIcon::Error);
    
    }
    else
    {
    	if (Int32::TryParse(textBox1->Text, postleitzahlTemp) == false)
    	{
    		MessageBox::Show("Das Format der Postleitzahl ist ungültig!","Fehler...",MessageBoxButtons::OK,MessageBoxIcon::Error);
    
    	}
    	else
    	{
    		MessageBox::Show("Die Postleitzahl ist gültig.","Info...",MessageBoxButtons::OK,MessageBoxIcon::Information);
    	}
    }
    

    Gruß, Doug_HH



  • Hallo Doug_HH,

    danke für Dein Antwort, aber in deinen Code kann ich keinen grundzätzlichen
    Unterschied zu meinen finden. Darum ihr einmal den gesamten Code der Methode.

    private: System::Void kPLZTextBox_Validating(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) {

    //für die Prüfung der PLZ

    Boolean fehlerKeinEintrag = false;

    Int32 plzTemp;

    //überprüfen ob das feld leer ist

    if (kPLZTextBox->Text == String::Empty){

    //Meldung anzeigen

    MessageBox::Show("Sie müssen ein Wert für das Feld PLZ eingeben");

    //die Aktion abbrechen

    e->Cancel = true;

    //fehlerKeinEintrag wird true, da die weitere Prüfung der PLZ nicht mehr erforderlich wird

    fehlerKeinEintrag = true;

    }
    //die Detailprüfung für die PLZ

    if ((kPLZTextBox->TextLength < 5) && (fehlerKeinEintrag == false)){

    //ist der Eintrag exakt 5 Zeichen lang?

    if (kPLZTextBox->Text->Length != 5){

    MessageBox::Show("Die PLZ muss 5 Ziffern lang sein!");

    e->Cancel = true;
    }

    //sind es nur Ziffern?

    else

    if (Int32::TryParse(kPLZTextBox->Text, plzTemp)== false){

    MessageBox::Show("Das Format der PLZ ist ungültig!");

    e->Cancel = true;
    }

    }
    }

    Wie gesagt alles Funktioniert bis auf TryParse, es wird einfach nicht ausgeführt. kPLZTextBox ist eine Verknüpfung zu einem Feld in einer DB-Tabelle.



  • Hallo schuhe04,

    so ganz stimmt der Code ja nicht mit meinem Vorschalg überein.
    Zum einem steht else vor der if Abfrage zum Parsen ganz alleine rum, macht null Sinn das elsechen da.

    Zum anderen fehlen zwei geschweifte Klammern, die Deiner if Anwendung den richtigen Sinn geben um auch in den else-Block zukommen...

    Und benutze bitte beim nächsten posten Code-Tags...zum Beispiel den C/C++, so lässt sich der Code schöner lesen.

    private: System::Void kPLZTextBox_Validating(System::Object^  sender, System::ComponentModel::CancelEventArgs^  e) 
    			 {
    				Boolean fehlerKeinEintrag = false;
    				Int32 plzTemp;
    
    				if (kPLZTextBox->Text == String::Empty)//überprüfen ob das feld leer ist
    				{
    					//Wenn Feld leer ist,Medlung anzeigen
    					MessageBox::Show("Sie müssen ein Wert für das Feld PLZ eingeben");
    
                        //fehlerKeinEintrag wird true, da die weitere Prüfung der PLZ nicht mehr erforderlich wird
    					fehlerKeinEintrag = true;
    
    					//die Aktion abbrechen
    					return;
    
    				}
    
    				//die Detailprüfung für die PLZ
    				if ((kPLZTextBox->TextLength < 5) && (fehlerKeinEintrag == false))
    				{
    
    					//ist der Eintrag exakt 5 Zeichen lang?
    					if (kPLZTextBox->Text->Length != 5)
    					{
    
    						MessageBox::Show("Die PLZ muss 5 Ziffern lang sein!");
    
    						//die Aktion abbrechen
    						return;
    					}	
    				} 
    				else
    					{
    						//sind es nur Ziffern?
    						if (Int32::TryParse(kPLZTextBox->Text, plzTemp)== false)
    						{
    							MessageBox::Show("Das Format der PLZ ist ungültig!");
    
                                                            //die Aktion abbrechen
    							return;
    						}
    					}
    			 }
    

    Aber ich denke mal, wenn Du mit den Debugger gearbeitet hättest, dann hättest Du auch gesehen, dass der Code nach dem parsen nicht mehr abgearbeitet wird.
    Der Debugger ist nach wie vor ein wichtiges Werkzeug, ohne dem geht das programmieren nicht.
    Ohne den Debugger ist das alles nur ein Rätselraten.

    Gruß, Doug_HH



  • Danke Doug_HH !!



  • hallo ! hat jemand ne Idee, wie ich dennoch falsche Angaben zu eurem Quelltext oben durch die Speichern-Taste abfangen kann ? Das Ereignis DataError gibts ja hierfür leider nicht



  • erledigt


Anmelden zum Antworten