Felder überprüfen



  • Hallo,

    ich habe ein Kontaktformular erstellt, in dem Adressdaten eingegeben werde können.
    m_Vorname
    m_Nachname
    m_Strasse
    m_Plz
    m_Stadt
    m_Email
    m_Telefon

    Wie kann ich diese Daten auf plausibilität prüfen, bevor ich diese weiterverarbeite (z.B. Drucken, mailen, etc.)
    Es soll dann eine MessageBox geöffnet werden, mit dem Hinweis, dass z.B. der Name fehlt.
    Anschliessend sollen die Daten weiterverarbeitet werden.



  • Hi,

    in der Funktion, die aufgerufen wird, wenn auf den Button geklickt wurde UpdateData aufrufen, damit alle Variablen gefüllt werden.
    Dann kannst du
    -mit CString::GetLength die Länge der Eingaben benutzen (z.B. ist ein Vorname nie kürzer als 2 Buchstaben).
    -mit CString::IsEmpty überprüfen, ob überhaupt etwas eingegeben wurde
    -mit CString::Find z.B. in einer eMailadresse nach einem @ und dann nach einem . suchen

    Wenn du 100%ig sicher gehen willst, dass die Eingaben korrekt sind, gehe am besten jedes Feld durch und überprüfe die ASCII-Werte der Zeichen (Schau in der ASCII Tabelle nach).

    Grüße Rapha



  • Hi,

    wie kann ich die weitere Ausführung des Buttons bei einem Fehler stoppen / anhalten?

    z.B. Wenn ein Feld keinen Wert enthält.

    Bei mir überprüft das Programm zwar das Feld, jedoch
    wird nach dem Hinweis über eine MessageBox die Ausführung
    fortgesetzt.
    Bei mir wird also danach trotzdem das Formular verschickt.

    ciao

    Update !!

    Hat sich erledigt....

    Dumme Frage...



  • Hi

    Deschain schrieb:

    wie kann ich die weitere Ausführung des Buttons bei einem Fehler stoppen / anhalten?

    noch ein bisl neu, was 😉 keine Angst, war jeder mal 👍

    Also, du kannst doch einfach mit return die Ausführung der Funktion unterbrechen:

    void CMyDlg::OnButton1()
    {
       //blablabla
       if(m_Vorname.IsEmpty())
       {
          MessageBox("Bitte einen Vornamen eingeben");
          return; // Ausführung der Funktion abbrechen
       }
       // Schicke die Daten
    }
    

    Grüße Rapha



  • Ja, so bin ich letztlich auch draufgekommen. 🙂

    Aller Anfang ist schwer

    Trotzdem Danke !!



  • Hab jetzt doch noch ein Problem,

    ich möchte das Feld Postleitzahl darauf überprüfen,
    dass nur Zahlen eingegeben sind.

    Ich habe versucht die ASCII-Zeichen zu überprüfen,
    jedoch zeigt er mir immer an, dass ich Zahlen eingeben soll,
    auch wenn ich Zahlen eingegeben habe.

    Wo liegt mein Verständnissproblem bzw. was macht die folgende Schleife genau?

    for (int i = 58; i<128; i++) {
    		while (m_plz.Find((char)i,0)) // Prüft ob die PLZ aus Buchstaben bestehen
     			{ 
    			AfxMessageBox ("Postleitzahlen müssen Numerisch sein");
    			return 1;
    		}return 0;
    	}
    

    Danke



  • Schau dir nochmal genau die Bedeutung des Rückgabewerts von Find an.



  • Hi,

    hab dir mal ne kleine Funktion geschrieben

    int StringIsNumeric(CString strString)
    {
    	if(strString.IsEmpty()) return -1;
    
    	// Jedes Zeichen durchgehen und überprüfen, ob es nummerisch ist
    	for(int i=0; i < strString.GetLength(); i++)
    	{
    		// ASCII 48 = 0 ASCII 57 = 9
    		if(strString[i] < 48 || strString[i] > 57) return false;
    	}
    	return true;
    }
    

    Grüße Rapha



  • Danke für die Tipps,

    das Programm läuft soweit schon fast.

    Jetzt wollte ich noch 4 Checkboxen einfügen.

    Ich frage die Checkboxen wie folgt ab:

    void CKontakt::OnCheck1() 
    {
    	if (m_bCheck1 == TRUE) {
    		m_check1 = "Bestellung";
    	} else { m_check1 = "";}
    }
    

    und möchte anschliessend, sofern Sie angeklickt sind,
    der Variablen m_check1 den Wert Bestellung zuweisen.

    Ich erhalten jedoch immer nur einen leeren Wert.

    Habe ich etwas vergessen??



  • UpdateData 😉


Anmelden zum Antworten