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 primaDann 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