![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
karataev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 28.1.2006 Где: Россия, Нижний Но вгород Репутация: нет Всего: нет |
Люди добрые, подскжите пожалуйста, как правильно отловить в Паскале нажатия клавиш, например стрелок и т.п. У меня получается отлавливать только клавиши со значениями таблицы ASCII а всякие там управляющие клавиши не получается...
![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: нет Всего: 484 |
Если речь идет о TP7, то здесь 3 варианта: 1. Читать данные с порта клавиатуры. 2. Через ассемблерные вставки, используя прерывание клавиатуры. 3. Через чтение области памяти BIOS. Только вот пример привести не могу - всего не упомнишь, а тут конкретные цифры нужны. Уж лет 10 на TP не кодил - не помню. Даже прерывание клавы не помню. Вроде $16... |
|||
|
||||
volvo877 |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Стрелки и другие управляющие клавиши - это расширенный код: сначала идет нулевой байт, а потом - собственно код... Программно это выглядит вот так:
Если нужно Ctrl/Shift/Alt/Locks - то там немного по другому: надо смотреть состояние байт по адресу $0:$417 и $0:$418...
|
||||||
|
|||||||
karataev |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 28.1.2006 Где: Россия, Нижний Но вгород Репутация: нет Всего: нет |
Спасибо большое, с этим я разобрался ![]()
А вот тут не могу объявить переменную, чтобы лежала по этому адресу. Не напомните как это сделать? |
||||
|
|||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
||||
|
||||
Zero |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
Нажатие контрол и остальных клавиш отдельно не фиксируется, а если их нажимать в сочетании, то определить код легко можно так:
С начала напиши такой код:
А дальше в отладчике, в пошаговом режиме смотри за изменением, при выполнении строки
Потом в пошаговом режиме посмотри, если нажать одну любую обычную клавишу (например 'q'), то в для неё кодовый символ так и будет 'q' в вочлисте, а если перед этим удерживать клавишу CTRL, а потом нажать 'q', то там будет код #17 Вот пример кода, который выдаст сообщение если нажата комбинация CTRL+<q>:
|
||||||
|
|||||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Уверен? Тогда запусти вот это:
(для выхода - любая обычная клавиша) |
|||
|
||||
karataev |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 28.1.2006 Где: Россия, Нижний Но вгород Репутация: нет Всего: нет |
Я ее и использую, только у меня Free Pascal и он говорит что "Error: absolute can only be associated with a var or const"... |
||||
|
|||||
UpL1nK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 3.12.2005 Где: Тюмень Репутация: нет Всего: нет |
Может в FP нельзя задавать абсолютный адрес, а только делать наложение на ранее определенную переменную ?
Это сообщение отредактировал(а) UpL1nK - 28.1.2006, 14:50 --------------------
Макс |
|||
|
||||
karataev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 28.1.2006 Где: Россия, Нижний Но вгород Репутация: нет Всего: нет |
Ну тогда нужно чтобы у переменной t был нужный мне адрес - это какой то замкнутый круг получается... ![]() |
|||
|
||||
UpL1nK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 3.12.2005 Где: Тюмень Репутация: нет Всего: нет |
Просто у меня BPW и абсолютный адрес и наложение работает, хотя я не думаю что есть чтото возможное в BPW , но невозможное в FP
![]() --------------------
Макс |
|||
|
||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
karataev, под какой ОС сидишь? Если под Windows, так пользуйся модулем Windows (какая разница, ты же можешь получить доступ к его функциям и из консольной программы):
Понажимай Ctrl и Shift, и посмотри как меняется текст... |
|||
|
||||
karataev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 28.1.2006 Где: Россия, Нижний Но вгород Репутация: нет Всего: нет |
Все, спасибо, я поставил себе Turbo Pascal 7.0 и все заработало.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |