С символьным типом Char мы познакомились в 5.6. Значением символьной переменной являются символы из таблицы ASCII.
Для работы с символами вам достаточно кроме вышеизложенных знать еще одну функцию - Chr. Выполнив оператор c1:=Chr(69), Паскаль присваивает c1 значение символа, соответствующего номеру 69 по таблице ASCII, т.е. латинского 'Е'.
Задание 112: Угадайте, что напечатает компьютер, выполнив оператор Write(Chr(Ord(Succ(Pred('+')))))
Задание 113: Распечатайте часть таблицы ASCII, конкретнее - символы, соответствующие кодам 32-255. Обратите внимание:
1) на символы так называемой псевдографики, применяемые для вычерчивания таблиц в текстовом режиме;
2) на разрыв в расположении строчных букв русского алфавита.
Использование клавиш передвижения курсора для управления компьютером с клавиатуры.
В 10.7 мы с вами научились вмешиваться в работу программы нажатием алфавитных и цифровых клавиш. Например, мы можем записать
if ReadKey=’R’ then…,
подразумевая какие-либо действия в случае, если нажата клавиша R. Если вы знаете коды клавиш по таблице ASCII, то вы можете то же самое записать по другому:
if ReadKey=#82 then…,
так как код клавиши R равен 82. Этот способ более универсальный, так как коды в буфер клавиатуры посылают и те клавиши клавиатуры, которым не приписано никакого символа. Например, клавиша Tab посылает код 9.
Итак, нам хотелось бы для управления компьютером использовать и другие клавиши, например, ¬ ® ¯. Сложность в том, что в отличие от алфавитных и цифровых клавиш, эти и некоторые другие клавиши и комбинации клавиш посылают в буфер клавиатуры не один код, а два, причем первый из них – ноль. Например, клавиша посылает в буфер пару (0,72), клавиша Insert посылает в буфер пару (0,82). Эта парочка называется расширенным кодом. Вот что будет в буфере, если мы нажмем подряд шесть клавиш: R R R Insert Insert:
|
|
|
|
|
|
|
82 |
82 |
82 |
0 |
72 |
0 |
82 |
0 |
82 |
Если вы помните механику работы буфера клавиатуры, то можете умелым использованием функции ReadKey выудить факт нажатия нужной вам клавиши. Так, если вы хотите определить, была ли нажата Insert, то можете записать такой фрагмент:
kl:= ReadKey; if kl =#0 then if ReadKey=#82 then…
При этом компьютер не спутает невинную клавишу R с клавишей Insert.
Вот коды, которые посылают некоторые клавиши в буфер клавиатуры:
|
0 72 |
¯ |
0 80 |
¬ |
0 75 |
® |
0 77 |
Page Up |
0 73 |
Page Down |
0 81 |
Home |
0 71 |
End |
0 79 |
Insert |
0 82 |
Delete |
0 83 |
BackSpace |
8 |
Esc |
27 |
Tab |
9 |
Enter |
13 |
пробел |
32 |
серый + |
43 |
F1 |
0 59 |
F2 |
0 60 |
F3 |
0 61 |
F4 |
0 62 |
F5 |
0 63 |
F6 |
0 64 |
F7 |
0 65 |
F8 |
0 66 |
F9 |
0 67 |
F10 |
0 68 |
F11 |
0 133 |
F12 |
0 134 |
Скачано с www.znanio.ru
© ООО «Знанио»
С вами с 2009 года.