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_TelefonWie 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 . suchenWenn 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
