1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
| ДенисС |
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 9 Репутация: 0 |
Стал вот потихоньку разбираться с паскалем, вроде что то получается. Вот возникла проблема: как задействовать стрелки и прочии несимвольные клавиши? С буквами-цифирьками вроде все просто, пишешь например C:=readln, а потом разными способами опредиляешь, что надо сделать с этой клавишей. А вот как быть со стрелками - как то непойму. Они вроде таким способом в строковую переменную ничего не записывают. Где-то краем уха услышал, что используется запись каким-то сложным шифром, а вот как его после этого опредилять, и какие кнопки каким шифром опредиляются - не слышал. Может здесь кто подскажет, как это все надо делать?
|
![]() ![]() |
| Altair |
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
APAL, не согласен с вами, так не проще.
ДенисС, этот метод как раз использует функция keypressed (определяет нажата ли клавиша) Вот тестовая программа, которая позволяет узнать сканкоды всех клавиш: Код uses dos; var scancod:word; begin repeat If port[$60]<$80 then begin scancod:=port[$60]; mem[0:$41C]:=mem[0:$41A]; {очистка} writeln(scancod) end until scancod=1; end. а вот эта более продвинутая программа: Код uses dos,crt; var scancod:word; begin clrscr; repeat If port[$60]<$80 then begin scancod:=port[$60]; mem[0:$41C]:=mem[0:$41A]; {®зЁбвЄ } writeln(scancod); port[$60]:=$80; end; If (scancod<>1) and (scancod<>0) then begin port[$60]:=$80; scancod:=0 end; until scancod=1; end. Итак обращаясь к порту $60 мы можем не только определить нажата ли клавиша, но и (что гораздо важнее) определить нажатую клавишу! в этих программах код клавиш - scancod . Вот примеры сканкодов: ESC =1 ENTER=28 SPASE=57 1=2 (клавиша 1 имеет код 2 ) n=n+1(клавиша n имеет код n+1, например 3-код4) q=16 ... (клавиши левее на 1 больше) p=25 и т.д -------------------------------- преимущества использования конструкции PORT[$60] 1) выигрыш в скорости: keypressed использует тоже обращение к портам, keypressed лежит в модуле CRT ---> компилируется с типом FAR --> задержка на несколько милисекунд, и занимает лишний байт!!!!!! 2) можно использовать не только как keypressed но и как readkey (2 в 1) 3) не надо мучаться с кодировками, все клавиши пронумерованны на всех компах одинаково ------------------------------ какие будут вопросики B) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
ДенисС Как задействовать стрелки? 2.04.2004 17:22
SKVOZNJAK Дык просто. При нажатии курсоров, эфок и т. д. В б… 2.04.2004 17:37
ДенисС Это я понял, спасибо. А вот как потом этот код обр… 2.04.2004 18:01
SKVOZNJAK IF KEYPRESSED=TRUE THEN IF ORD(READKEY)=0 THEN IF … 2.04.2004 18:10
buy phentermine viagra online xa Comprare Il Viagra On Line 10.11.2021 7:53
Altair Раз уж речь пошла про клавиатуру, то позвольте рсс… 2.04.2004 19:46
SKVOZNJAK Но обнулять буфер всё-равно надо! Иначе при за… 3.04.2004 1:14
Altair Да, SKVOZNJAK, согласен с вами, обнуление буфера -… 3.04.2004 12:04
can i buy priligy over the count Get Progesterone Fedex Shipping 15.11.2021 19:19
ДенисС Oleg_Z
А можно поподробнее про этот метод, я паск… 3.04.2004 13:10
APAL А может проще:
Repeat
{выполняем програм… 4.04.2004 14:02
APAL А если надо узнать в какой кодировке была нажата к… 4.04.2004 16:45
Altair Да,APAL, согласен тогда разделим сферы интересов:
… 4.04.2004 16:53
APAL Полностью согласен!
P.S.: У тебя хорошо получ… 4.04.2004 17:36
BlackShadow Я бы ещё порекомендовал использовать модифицирован… 6.04.2004 14:28
Altair Отлично, думаю надо создать тему "Замена стан… 6.04.2004 17:05
P@sh@ не забывайте также, что седьмой бит значения scanc… 6.04.2004 18:43
APAL
Идея хорошая!
Если откапаю в своем архиве вы… 7.04.2004 1:32
SKVOZNJAK Ну, если уж почувствовали в себе силушку богатырск… 7.04.2004 1:51
do you need a prescription for p cheap generic cialis uk 19.12.2021 9:32
P@sh@ процедурка для проверки нажатых клавиш - обычных, … 7.04.2004 9:04
P@sh@ ASCII можно объявить как Char, в ней будет возвращ… 7.04.2004 9:06
ДенисС Ой, углубились вы куда-то. Операторы какие-то стра… 13.04.2004 10:25
Altair точно. 13.04.2004 10:26![]() ![]() |
|
Текстовая версия | 6.11.2025 14:56 |