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.


Anmelden zum Antworten