Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Стандартная функция readKey




Более универсальным средством взаимодействия с клавиатурой является стандартная функция readKey из системного модуля Crt. Функция вызывается без параметров, возвращает значение символьного типа и работает следующим образом. Организуется задержка выполнения с ожиданием нажатия клавиши. После того, как нажатие произведено, функция завершает работу, возвращая код нажатой клавиши. Полученное значение можно использовать далее в программе. Тривиальный пример работы с функцией readKey, не требующий комментариев, может выглядеть так:

Program UsereadKey;

Uses

Crt;

Var

Sym: Char;

Begin

ClrScr;

while true do

begin

write (‘Введите букву - ‘);

Sym:= readKey;

writeln (‘Вы ввели букву - ‘, Sym);

if Sym = ‘q’

then

Exit

end

End.

Примечание. Здесь использована процедура Exit, которая позволяет досрочно выйти из программы. Применение этой процедуры является плохим стилем программирования.

Функция readKey не отображает введенный символ на экран, благодаря чему она широко используется для организации управления в различных диалоговых программах. В дополнение к этому readKey позволяет отслеживать нажатие более широкого множества клавиш, опознавая функциональные и редактирующие клавиши и их сочетания с управляющими клавишами Ctrl, Alt, Shift.

Если говорить более подробно, функция readKey исходит из того, что все множество клавиш и их сочетаний с управляющими клавишами разбито на два подмножества, которые обычно называют основным и расширенным наборами.

В основной набор входят клавиши букв, цифр, разделителей и знаков препинания, их комбинации с клавишей Shift (или, что то же самое, при включенном переключателе CapsLock), а также клавиши Tab, BackSpace, Enter и Esc. Если нажата одна из перечисленных клавиш, то readKey возвратит обычный ASCII-код соответствующего символа.

В расширенном наборе содержатся некоторые (не все) клавиши из основного набора в комбинации с клавишами Ctrl и Alt, а также функциональные и редактирующие клавиши. Если нажимается одна из клавиш расширенного набора, то функция readKey возвращает символ с кодом 0 (его представление в программе – chr(0) или #0). В этом случае повторное обращение к readKey вернет код клавиши из расширенного набора.

Коды клавиш из основного и расширенного наборов в виде, удобном для включения в Турбо Паскаль-программы, приведены в приложении.

Схема использования функции readKey для общего случая может выглядеть так:

Program UsereadKey2;

Uses

Crt;

Var

Sym: Char;

Begin

ClrScr;

while true do

begin

write (‘Нажмите клавишу‘);

Sym:= readKey;

If Sym <> #0

then

begin { основной набор }

case Sym of

#8: writeln (‘Вы нажали BackSpace‘);

#9: writeln (‘Вы нажали Tab‘);

#13: writeln (‘Вы нажали Enter‘);

#27: writeln (‘Вы нажали Esc‘);

else

writeln (‘Вы ввели символ ‘,Sym);

end;

if Sym = #27

Then

Exit

end

Else

begin {расширенный набор}

Sym:= readKey;{повт. чтение: берем расширенный код}

writeln (‘Вы нажали клавишу с кодом ‘, Ord (Sym)));

end

end

End.

Большинство прикладных диалоговых программ использует описанную технику взаимодействия с клавиатурой. Однако встречаются случаи, когда возможностей функции readKey оказывается недостаточно. На самом деле функция readKey воспринимает нажатия не всех клавиш: достаточно попробовать, запустив вышеприведенную программу, нажать клавиши F11, F12, ввести комбинацию Alt+Esc и т.д. Тому, кто желает более детально изучить работу этой функции, предлагаем самостоятельно найти в книгах по Турбо Паскалю этот материал. А мы ограничимся вышесказанным.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных