Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#2

AW: Seltsames Verhalten von GetAsyncKeyState?

  Alt 23. Okt 2017, 10:57
GetAsyncKeyState hat zwei Werte (Bits) in seinem Result, der "doppelte" Aufruf sollte sich hier (2) eigentlich garnicht auswirken, im Gegensatz zu (1), aber da wäre dein Vorgehen eher tödlich.

Test: Drücke die Tasten so lange, bis du diesen Dialog siehts.
[EDIT] Lies die Dokumentation und bedenke deine falsche Auswertung (4) -> MSDN-Library durchsuchenGetAsyncKeyState.

Delphi-Quellcode:
1: Ord(GetAsyncKeyState(...)) <> 0 // LSB: Taste wurde zwischen jetzt und dem letzten Aufruf von GetAsyncKeyState gedrückt.
2: GetAsyncKeyState(...) < 0 // MSB: Taste ist "jetzt" gedrückt, während des Aufrufs !!!
3: GetKeyState(...) // Taste wurde gedrückt, als Windows mit der aktuellen Aktion anfing (als die aktuell verarbeitete Message "gesendet" wurde)

4: GetAsyncKeyState(...) = 0 oder GetAsyncKeyState(...) <> 0 // MSB *und* LSB auswerten, das kann nur schief gehen, darum hilft hier der "tödlich" doppelte Aufruf
Ich empfehle dir auch den Unterschied zwischen GetAsyncKeyState und GetKeyState zu lernen und dann Letzeres zu verwenden.
http://blog.m-ri.de/index.php/2008/0...-zu-verwenden/
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Okt 2017 um 11:30 Uhr)
  Mit Zitat antworten Zitat