Добрый день.
В описании функции GetAsyncKeyState написано:
-----------------------------------------------------------------------------------
function GetAsyncKeyState(Key: Integer): Integer;
Опpеделяет состояние виpтуальной клавиши.
Паpаметpы
Key: Код виpтуальной клавиши.
Возвpащаемое значение
Если установлен стаpший байт, клавиша Key находится в нажатом положении, а если младший - то клавиша Key была нажата после пpедыдущего вызова функции.
--------------------------------------------------------------------------------
Вопрос такой: Меня интересует только клавиша, нажатая сейчас, а не после предыдущего вызова функции. Когда в цикле проверяешь состояние клавиш таким способом:
for i:=... to .. do
if GetAsyncKeyState(Key[i]) <> 0 then ...
функция ловит и те клавишы, которые были нажаты до входа в цикл.
При этом результат функции при нажатой клавише равен GetAsyncKeyState(Key[i]) = -37854;
Результат остальных (до того нажатых) GetAsyncKeyState(Key[i]) = 1.
Я так понимаю, "-37854" означает заполнение старшего байта, а "1" означает заполнение младшего байта.
Как же мне узнать, старший байт установлен или младший байт?
Тупо проверять
if (GetAsyncKeyState(Key[i]) = -37854) or (GetAsyncKeyState(Key[i]) = 1) then...
не хочется. Может кто подскажет, как по уму выполнить битовую проверку?