Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249152 (10588)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Tástaturpuffer löschen o. ä.
Lars Karlowski
| 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 :-)
Sven Schmidts
| 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
Lars Karlowski
| 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!)

| Zurück zur Übersicht