Autor | Thema: Tástaturpuffer löschen o. ä. |
| Datum:24.02.02 18:49 
(lars.karlowski@gmx.de) | |
Hallo zusammen!
Ich hab jetzt eine Weile lang versucht in den Profan²- Foren eine Lösung für mein Problem zu finden. Leider hat das nicht zum Erfolg geführt. Daher richte ich mich jetzt an euch Profan²- Profis.
Es geht um folgendes:
In einer While- Schleife wird durch Abfragen einer Taste mit Scankey eine Prozedur gestartet.
Nach dem Durchlaufen der Prozedur kehrt das Programm in die While- Schleife zurück.
Dort reagiert Scankey zu meinem Leidwesen schon wieder auf die alte Tasteneingabe und startet die Prozedur erneut.
Das soll aber nicht so sein.
Ein Waitkey in der Prozedur oder im Programm fällt weg, da sonst die While- Schleife angehalten wird.
Wie schaffe ich es, daß mit einem Tastendruck die Prozedur nur einmal durchlaufen wird (Tastaturpuffer löschen oder so was)?
(Benutze Profan²7.0d mit Windows ME)
BYE LK :-)
|
|
| Datum:24.02.02 20:10 
(schmidts@flat2serv.de) | |
Hallo,
der Tastaturbuffer wird mit einer API gelöscht, diese am besten mehrmals (>5) aufrufen. Habe allerdings nur die Delphi Definition, musst Du nach Profan² umsetzen:
function GetAsyncKeyState; external user32 name 'GetAsyncKeyState';
Weitere Info's enthält die WIN32.HLP:
"
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.
SHORT GetAsyncKeyState(
int vKey // virtual-key code
);
Specifies one of 256 possible virtual-key codes.
Windows NT: You can use left- and right-distinguishing constants to specify certain keys. See the Remarks section for further information. Windows 95: Windows 95 does not support the left- and right-distinguishing constants available on Windows NT.
"
Mfg.
Sven Schmidts
|
|
| Datum: 25.02.02 09:12 
(lars.karlowski@gmx.de) | |
Danke Sven.
Das mit der API- Programmierung erschien mir zu kompliziert. Daher habe ich mir die Nacht mit der Suche nach einer einfacheren Möglichkeit um die Ohren geschlagen. Und ich habe sie gefunden.
Für alle die es interessiert ein kleines Testprogramm:
declare test%
cls
proc tastendruck
print "taste wurde gedrückt"
Let Test% = 2
endproc
Let Test% = 2
While 1
if @lt(Test%,1):
tastendruck
endif
Case %GetInputState:Dec Test%
Wend
end
Die Prozedur "Tastendruck" wird bei Tastendruck wirklich nur einmal aufgerufen.
(Das war es was ich wollte!)
|
|