Fehlermeldung erzeugen (anstattTexteineZahl)



  • hi

    eine Frage, kann mir jemand sagen, wie man das macht.
    Ich möchte eine Fehlermeldung erzeugen lassen, wenn anstatt einer Zahl ein Text oder Sonderzeichen eingegeben wurde.

    // Fehlermeldung erzeugen,falls keine Zahl eingegeben wurde
    	if (sLieblingszahl.......keine Ahnung)
    
        { 
            //weiter arbeiten 
        } 
    
        else 
        { 
            MessageBox("Bitte geben Sie eine Zahl ein !"); 
            return; 
        }
    

    Besten Dank für die Hilfe 🙂



  • Dafür gibt es die Funktion isnum() oder isdigit()

    bool klasse::checkisnummeric(CString checkstring)
    {
    
    for( int i=0; i<=checkstring.GetLength()-1; i++)
    {
    
      TCHAR z = checkstring[i];
      if( isdigit(z))
      {
      }
      else
    	  return false;
    } 
    
    return true;
    
    }
    


  • Wieso gibst du Hints auf ne FUnktion und ein Beispiel indem diese Funktion gar net drin vorkommt? ;))



  • okay, vielen dank für die Hilfe
    Hab die Funkt nun übernommen und wie muss ich das dann mit meinem Code oben verknüpfen bzw aufrufen ?
    danke



  • Kann mir da jemand bitte weiterhelfen, 🙂
    vielen dank



  • Du kopierst den Code von Unix-Tom in dein Programm und dann benutzt du deine Funktion :

    if (checkisnummeric(TestCString) // Hier den String den du testen möchtest
        { 
            //weiter arbeiten 
        } 
    
        else 
        { 
            MessageBox("Bitte geben Sie eine Zahl ein !"); 
            return; 
        }
    

    Mehr ist das nicht ..

    Gruß
    :: NoName ::



  • hi NoName
    vielen dank für deine Hilfe, das hab ich nicht gewusst wie das schreibe
    if (checkisnummeric(TestCString) // Hier den String den du testen möchtest

    grüße
    stgt 👍



  • Die Funtion gibt false zurück wenn im CString irgendwo keine Zahl gefunden wird. TRUE fals alle Zeichen darin Zahlen sind.



  • okay danke schön Unix-Tom 👍



  • hi

    und zwar , wenn ich jetzt in das Eingabefeld eine Kommazahl eingebe, läuft das ganze ja schief.
    Kann mir jemand bitte sagen, was ich anstatt dem isdigit nehmen muss?
    In der msdn hab ich nichts gefunden...
    danke



  • Wenn du verstanden hättest was der obere Code macht dann könntest du dir auch die Frage sparen.

    Ich poste nicht Code damit andere ihn Copy/Paste übernehmen sondern daraus lernen.
    Ich werde dir auch nicht die einzelnen Teile deines Programes Programmieren.

    Wenn du mir genau erklären kannst was mein Code oben macht dann geben ich dir auch eine Antwort auf deine weitere Frage.



  • toll...
    klar weiß ich was der code macht.

    hier: TCHAR z = checkstring[i]; bekomm ich immer die Dez und Char Wert

    also liegts am iswdigit,
    isdigit bringt einen ungleich nullwert zurück, wenn c eine Dezimalziffer ist (0 - 9).

    Muss ich dass dann so machen, dass ich
    46 '.' --> zulasse und
    bei 44 ',' eine Fehlermeldung erzeugen lassen soll



  • habs dann hinbekommen:

    for( int i=0; i<=checkstring.GetLength()-1; i++) 
    { 
    
       TCHAR z = checkstring[i]; 
       if( iswdigit (z) ) 
       { 
       } 
       else 
      {
    	if(z == '.')
    	{
    	}
    	else
             {
    		 return false;  
    	}
    
    	  }
    	} 
    
    	return true;
    

Anmelden zum Antworten