getch() wird nur "einmal" aufgerufen



  • Hallo 😉

    ... dazu muss ich wohl nichts sagen^^

    while(true)
    		{
    			if(_getch() == Esc)
    			{
    				std::cout << ":)" << std::endl;
    			} else {
    				std::cout << ":(" << std::endl;
    			}
    			continue;
    		}
    

    ich möchte, dass ich Tasten öfters drücken kann, um eine Ausgabe zu erhalten.

    Aber nach einmaliger Eingabe passiert nichts im Programm -.-

    Wäre für jede vernünftige Antwort sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehr sehrsehr sehr sehr sehr s... ähhh DANKBAR 😃



  • edit: Sorry, ich hab vergessen zu erwähnen,dass ich Esc wie folgt definiert hab:

    #define Esc 27
    

    Mfg



  • mach mal den den '_' vorm getch( ) weg.

    oder versuch das mal:

    #define ESC 27
    int key = 0;
    
    while( true ) {
    
       key = getch( );
       if( key == ESC ) {
    
          // ...
       }
       else {
    
          // ...
       }   
    }
    

    Gruß Tobi.



  • geht ja nicht, weil das ein dialekt vom compiler(VC) is ....

    wie kann ich öfters abfragen? btw was ich oben geschrieben hab´´
    mfg



  • bitte helft mir 😞



  • also möglicherweise solltest du kbhit() noch mit einbinden

    while( true ) {
    if( kbhit( ) ) {
    
       key = getch( );
    
       switch( key ) {
    
           case 27: {
    
               //...
           }
       }
    }
    
    }
    

    Gruß Tobi.



  • @T0bi: Das liefert Prozessorauslastung 100% und sonst gar nichts.

    Es wird wesentlich mehr Code benötigt, dein Code der hier steht sollte so funktionieren.

    MfG SideWinder



  • hallo

    SideWinder schrieb:

    Es wird wesentlich mehr Code benötigt, dein Code der hier steht sollte so funktionieren.

    also ich hab es noch einmal getestet. Es funktioniert, allerdings nur "alleine". Das heißt,dass die While nicht mit meinem Rest kompatibel ist 🙄

    switch(/*Variable vom Typ int*/)
    	{
    	case 1:
    		//..
    		while(true)
    		{
    			//..
    			if(getch() == Esc)
    			{
    				std::cout << ":)" << std::endl;
    			} else {
    				std::cout << ":(" << std::endl;
    			}
    			continue;
    		}
    		break;
    	case 2:
    		// ..
    	case 3:
    		// ..
    	default:
    		// ..
    	}
    

    Aber ich hatte eine Vermutung,dass ich vielleicht die bedingung in der switch (=> Variable vom Typ Int) zu einem Char Typen mache, würde aber keinen Sinn haben.

    Wäre für jede Antwort dankbar 😉

    Mfg



  • Also das hier funktioniert wunderbar:

    #define ESC 27
    
    int main ()
    {
    	while(true)
    	{
    		char c = _getch();
    		if(c == ESC)
    			break;
    		else
    			cout << "Sie haben: " << c << " eingegeben." << endl;
    	}
    
    	return 0;
    }
    

    Dein Fehler muss eindeutig woanders liegen...

    BTW: Am Ende der while()-Schleife ein continue? Bist du dir sicher, dass das Sinn macht?

    MfG SideWinder



  • Also ich habe den Fehler gefunden.
    Es war doch die switch-Anweisung. Wenn ich while mittendrinnen schreibe, funktioniert nichts, wenn außerhalb, funktionierts prima 😉



  • H4H4 schrieb:

    Also ich habe den Fehler gefunden.
    Es war doch die switch-Anweisung. Wenn ich while mittendrinnen schreibe, funktioniert nichts, wenn außerhalb, funktionierts prima 😉

    Dann ist etwas gehörig schief gelaufen 😉 Ich will lieber nicht wissen was es ist 🙄

    MfG SideWinder



  • nein, es war eine ganz simple switch 🙂

    Aber ein großes Lob und Dank an dich für deine Hilfe!!

    Mit freundlichen Grüßen 😉


Anmelden zum Antworten