Veröffentlicht 7. April 200322 j Hallo, wie kann ich in folgendem Beispiel alle Tasteneingaben während der "Do-Nothing-Loop" ignorieren. Ich muss den Tastaturpuffer leeren, wenn ich mich nicht irre. Wie? void main() { int time = 0; char key = 0; time = clock(); while ((clock() - time) < 5000) {} printf("Taste: "); key = getch(); }
7. April 200322 j Hi, ich hab dein Problem, ehrlich gesagt, nicht so ganz verstanden. Du willst während der while Schleife keine Tastatureingaben zulassen, aber du wartest doch erst nach der Schleife auf eine Eingabe:confused: Gruß Guybrush
7. April 200322 j Wenn ich eine Taste während der 5 Sekunden drücke, in denen die Scheife läuft, wird dieser Tastendruck von getch() ausgewertet. Das will ich aber nicht. Es sollen nur Tasteneingaben ausgewertet werden, die nach dem printf() erfolgen.
7. April 200322 j Hallo, Dann solltest Du vor dem printf() den Tastaturpuffer leeren (indem Du ihn beispielsweise in einer Schleife ausliest). Ansonsten liefert main() immer ein in zurück (int main()). Nic
8. April 200322 j Ich hab's jetzt so gelöst: while (kbhit()) getch(); key = getch(); if (key == -32) key = getch(); Jetzt ist nur die Frage, ob bei z.B. den Pfeiltasten (haben ja einen "Doppelwert") immer die -32 (hex e0) als erster Code zurückgeliefert wird, oder kann auch was anderes rauskommen?
8. April 200322 j Hallo wenn ich dein zweites Problem richtig verstanden habe, dann hatte ich es auch, also bei der Eingabe einer Cursor o. F-Taste war der wert 0+x. int taste(); { int t; t = getch(); if (t = 0) t = -1 * getch(); return t; } dadurch kann ich sowohl "normale" Tasten einlesen als auch F-Tasten und Cursor Tasten. Letztere sind dann eben negativ. Wenns bessere Varianten dazu gibt würd ichs gern wissen, bin noch ein Frischling in Sachen programmierung Grüsse
8. April 200322 j Also, wie gesagt, bei mir funktioniert meine Lösung. F-Tasten, Enter, Escape und solche Tasten liefern ja immer einen doppelten Code zurück. Nur war eben meine Frage, ob der erste Teil immer die hex e0 sein muss.
10. April 200322 j Also soweit ich mich an meine vorherige Schule erinnern kann, waren die Codes beim Borland C++ anders als beim Visual C++. Frag mich aber nicht warum. Anstatt der -32 am Anfang, kam da glaube ich immer die NULL.
10. April 200322 j Original geschrieben von Guybrush Threepwood Also soweit ich mich an meine vorherige Schule erinnern kann, waren die Codes beim Borland C++ anders als beim Visual C++. Frag mich aber nicht warum. Anstatt der -32 am Anfang, kam da glaube ich immer die NULL. Dann würde ja nicht stimmen, was ich hier gelesen habe: http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html Dort steht unter Escaped Scancodes, sie würden mit e0 (-32) beginnen. :confused:
10. April 200322 j Ich weiß es wie gesagt nicht mehr genau, aber ich glaube es war ein anderer Code. Obwohl das ja eigentlich keinen Sinn machen würde. Vielleicht installiere ich mir den Borland Compiler heute Nachmittag mal und schau mal nach.
10. April 200322 j Original geschrieben von Guybrush Threepwood Vielleicht installiere ich mir den Borland Compiler heute Nachmittag mal und schau mal nach. Jau, das wär echt klasse. Da bin ich ja mal gespannt, was da rauskommt!
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.