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! 👍 😉


Anmelden zum Antworten