Programm zur Ausgabe von Zeit und Anzahl bei Tastendruck, Benötige Hilfe



  • Hallo,

    ich benötige Hilfe dabei ein Programm zu schreiben, welches mir die aktuelle Uhrzeit und dazu eine Zahl per Tastendruck ausgibt und dabei soll sich die Zahl um 1 steigern jedes mal wenn ich die Taste drücke.

    Bin noch Programmieranfänger, weswegen ich etwas ratlos bin, wie ich die Uhrzeit ausgebe und das mit dem steigern der Zahl bekomm ich hin, hab jetzt auch schon ein Programm, das eine Schleife durchläuft und jedesmal wenn ich Leertaste drücke zählt es was dazu, allerdings hab ich das Problem das ich auf dem Weg wie es jetzt ist, nicht nur eins per Tastendruck dazubekomme sondern gleich viel mehr.

    Hier ein Auszug aus dem Quelltext:

    N = 0;

    time_t rawtime;
    struct tm * timeinfo;

    time (&rawtime);
    timeinfo = localtime (&rawtime);
    while(1)
    {
    if(GetAsyncKeyState(VK_SPACE))
    {

    cout << asctime(timeinfo);
    cout << "Anzahl = " << N++ << endl;
    }
    }



  • GetAsyncKeyState liefert die in jedem Durchlauf der Schleife (auch) den aktuellen Zustand.

    Und die Schleife läuft schneller, als du die Taste drücken und wieder loslassen kannst.

    msdn schrieb:

    Return value

    Type: SHORT

    If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx

    Probier mal

    if(GetAsyncKeyState(VK_SPACE) & 1)
    


  • Funktioniert jetzt genau wie es soll, vielen Dank! (:



  • GiftZwergrapper schrieb:

    Funktioniert jetzt genau wie es soll, vielen Dank! (:

    Doch noch nen Fehler gefunden, es gibt die Uhrzeit einmal aus und dann immer wieder dieselbe Uhrzeit wie am Anfang, nicht die akutelle.



  • Du fragst die Uhrzeit ja auch nur einmal (vor) der Schleife ab.



  • Ah, sry und danke!
    *schäm*


Anmelden zum Antworten