switch-case Probleme



  • Beschäftige mich erst seit kurzem mit C++ und würde mich über jede Hilfe wirklich freuen.
    Also ich habe ein Problem mit der switch Anweisung.
    Ich komme über die for-Schleife nicht hinaus.
    Über Haltepunkte ist mir aufgefallen, das er die case-Anweisungen nicht annimmt.
    Hier mal kurz mein Code:

    for (x=1; x<=Edit2->Text.Length()-1;x++) {
     Tstr=Edit2->Text[x];
    	switch ( Tstr )
     {
    		case '1-9': Pruefsumme++;break;
    		case ('+','-'):Pruefsumme++;break;
    
    		default:
    	 ;
    	}
    
    }
    

    Seht ihr einen größeren Fehler oder gibt es eine einfachere Möglichkeit, zu überprüfen ob in Edit2 nur Zahlen eingegeben sind?



  • Hallo,

    so sollte es gehen:

    Integer iAnz,iAscii,iPruef; AnsiString z1;                                      // Vars definieren
    
    z1    =Edit2->Text;                                                             // Edit auslesen
    iAnz  =z1.Length()-1;                                                           // Länge bestimmen
    iPruef=0;                                                                       // Zähler init
    
    for(int x=1;x<=iAnz;x++) {                                                      // alle Zeichen
     iAscii=char Edit2->Text[x];                                                    // in Ascii wandeln
     if((iAscii>48 && iAscii<58) || iAscii==43 || iAscii==45) { iPruef++; }         // bei 1...9 +  -   =Zähler+1
    }                                                                               // ende for(i1
    

    Gruss Stefan


  • Mod

    Hallo

    waere es nicht besser gleich die Eingabe abzupruefen

    Mfg
    Klaus



  • Hallo, Klaus

    klar, wäre mit KeyPress usw. einfacher. Aber scheinbar will er ja diese Zeichen zählen... 😉

    Gruss Stefan


Anmelden zum Antworten