Beende Programm während einer Berechnung jederzeit nur mit bestimmter Taste
-
Ich würde gerne eine Berechnung solange ausführen, bis der Benutzer die Taste A drückt und zwar nur die Taste A.
Ohne die Einschränkung mit A ist das Ganze kein Problem, ich könnte folgendes tun:
while (!_kbhit()) { calculate(); }
Wie aber kann ich das auf die Taste A beschränken, vemutlich mit _getch(), aber es will mir einfach nicht in den Sinn kommen wie genau.
-
Das ist kein Standard. Welchen Compiler nutzt Du denn?
mfg Martin
-
Visual Studio 2013, respektive cl.exe. Ein standardkonformer Weg wäre mir natürlich am liebsten, aber primär sollte es überhaupt mal funktionieren. Und ich komme irgendwie nicht drauf wie das gehen soll.
-
Ja, genau du rufst danach einfach _getch() auf, s.a. _kbhit.
In deinem Fall am besten:
while (true) { if (_kbhit()) if (_getch() == 'a') break; calculate(); }
-
wäre es nicht besser, du trennst GUI (bzw. User IO) und Berechnung, sprich, du verwendest dafür 2 Threads?
Dann kann deine Berechnung brav rechnen, während der andere Thread einfach nur schläft bis der User was eingibt.
Und wenn denn dann ein A eingegeben wurde, so führst du ein exit(0) durch, wodurch der gesamte Prozess beendet wird - und somit auch der andere Thread.