im Eingabefeld Zeichen nur einmal erlauben
-
Hallo Leute
Ich überwache mein Eingabefeld mit EN_CHANGE und folgender Funktion:
BOOL CMethEdit::IsKoeffALB() { CString koeffalb; GetDlgItemText(IDC_EDIT_KOEFFA_LB,koeffalb); for(int d=0; d<=koeffalb.GetLength()-1; d++) { TCHAR z = koeffalb[d]; if((!isdigit(z)) && (z != 46) && (z != 45)) return FALSE; } if(koeffalb.IsEmpty()) { return FALSE; } return TRUE; }Wie zu erkennen ist, wird hier ein Test vorgenommen. Zum einen das nur Ziffern, ein "." und ein "-" erlaubt sind und zum anderen ob überhaupt was drin steht ( IsEmpty ).
Der User kann aber leider nicht nur ein Punkt ( 3.5 ) eingeben sondern es könnte für den Programmfluß völliger Unsinn eingetragen werden z.B.: ( 3.55.23 ).
Wie kann ich dafür sorgen, das immer nur ein Punkt eingetragen werden kann und er bei einem zweiten Punkt FALSE zurückgibt???
Vielen Dank für alle Vorschläge!
MfG
RunSeb
-
Versuche es so:
if(koeffalb.ReverseFind('.') != koeffalb.Find('.')) { return FALSE; }
-
DANKE!
