Zeitliche Eingabebeschränkung programmieren



  • Hallo,
    ich komme gerade zurück zum
    programmieren und hänge an einem glaube ich einfachen Problem....
    Ich möchte gerne die Eingabezeit sichtbar beschränken. Es soll also ein Timer von n Sekunden herunterlaufen,
    während man eine Eingabe tätigen kann. Im Moment arbeite ich mitder Konsole möchte es später aber auch mit einer GUI wahrscheinlich Qt nutzen sowie mit PHP oder Javascript daher wäre ich an einer prinzipiellen Lösung interessiert. Wie auch immer im Moment benutze ich C++.

    Das Problem besteht darin, daß wenn ich eine Schleife mit cout benutze das Programm auf die Eingabe wartet und
    erst dann eventuelle if Abfragen abarbeitet. Eigentlich müsste es doch möglich sein die Eingabe zu öffnen und dann eine Schleife zu
    starten die nur den Speicherplatz der offenen Variable überprüft oder ?

    Ich bin für jede Hilfe dankbar auch ein passendes Stichwort womit ich mich beschäftigen muß wäre schon Toll.

    Vielen Dank
    TwoOfHearts



  • Mit Standardmitteln wirst du vermutlich nicht so weit kommen, wie du willst (du kannst höchstens nach der Eingabe die Zeit vergleichen und den Nutzer wegen Langsamkeit tadeln). Wenn du sofort reagieren willst, wenn der Timer abgelaufen ist, brauchst du System-Funktionen wie kbhit() und mußt wirklich jeden Tastendruck einzeln erkennen und verarbeiten.

    PS: Bei deinen Vorgaben ist CLI vermutlich das falscheste Board 😉



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn du bei deiner GUI angelangt bist z.B. Qt empfehle ich dir sehr 😉 dann ist das ganze viel einfacher:
    Du hast ein Eingabefeld, im Hintergrund läuft ein Timer und schließlich fügt sich beides zusammen, indem der Timer das Feld dann blockiert, wenn die Zeit abgelaufen ist. Ein einfacher Ansatz wäre auch die Benutzung von mehreren Threads, bei denen der eine den anderen zeitlich überwacht...



  • Man kann Qt auch für KOmmadozeilenprogramme nutzen. Einfach QTimer verwenden.



  • Hallo,
    vielen Dank für die vielen Antworte, ihr habt mir schon sehr weitergeholfen.
    Da ich sowohl für Linux als auch OSX programmiere muß ich mich nun erstmal mit
    libncurses und termios.h beschäftigen.

    Qt ist schon kompiliert und läuft aber ich glaube das schiebe ich noch einen Moment zurück aber danke für den Tipp mit QTimer.

    Als erstes werde ich mich nun mit Threads beschäftigen ich dachte zuvor das wäre etwas "Overt the Top" für so ein einfaches Problem aber nun gut.
    Also viel zu Tun.

    Vielen Dank euch !!!


Log in to reply