p align="left"> Var stro:text; s:dlina; reg:char; filename:string[12]; {$i c:\turbo\sozdt.pas} {$i c:\turbo\obrt.pas} {$i c:\turbo\rasht.pas} Begin while true do Begin writeln('укажите режим'); writeln('1: создание, 2: вывод на экран, 3: расширение, 4: выход'); readln(reg); case reg of '1': sozdt; '2': obrt; '3': rasht; '4': halt else writeln('повторите номер режима'); end;end;end. 11. Использование библиотеки CRTРазработчики Турбо-Паскаля предусмотрели несколько подпрограмм, существенно увеличивающих возможности текстового ввода-вывода. Эти подпрограммы сосредоточены в библиотеке (модуле) CRT, входящей в комплект поставки Турбо-Паскаля. В модуль включены также процедуры sound, no sound, delay, позволяющие программировать звуковой генератор компьютера.
11.1. Программирование клавиатуры Дополнительные возможности управления клавиатурой реализуются двумя функциями: keypressed и ReadKey. Функция keypressed возвращает значение типа boolean, указывающее состояние буфера клавиатуры: false означает, что буфер пуст, а true - что в буфере есть хотя бы один символ, еще не прочитанный программой. В реализуется так называемый асинхронный буферизованный ввод с клавиатуры. По мере нажатия на клавиши соответствующие коды помещаются в особый буфер, откуда они могут быть затем прочитаны программой. Стандартная длина буфера рассчитана на хранение до 16 кодов символов. Если программа достаточно долго не обращается к клавиатуре, а пользователь нажимает клавиши, буфер может оказаться переполненным. В этот момент раздается звуковой сигнал и «лишние» коды теряются. Чтение из буфера обеспечивается процедурами read/rеadln и функцией ReadKey. обращение к функции keypressed не задерживает исполнения программы: функция немедленно анализирует буфер и возвращает то или иное значение, не дожидаясь нажатия клавиши. Функция ReadKey возвращает значение типа char. При обращении к этой функции анализируется буфер клавиатуры: если в нем есть хотя бы один не прочитанный символ, код этого символа берется из буфера и возвращается в качестве значения функции, в противном случае функция будет ожидать нажатия на любую клавишу. Ввод символа с помощью этой функции не сопровождается эхо-повтором и содержимое экрана не меняется. Например, в какой-то точке программы необходимо игнорировать все ранее нажатые клавиши, коды которых еще непрочитаны из буфера, т.е. необходимо очистить буфер. Этого можно достичь следующим способом: Uses CRT; Var с; char; Begin while Keypressed do c:== ReadKey; . . . . . end. При использовании процедуры ReadKey следует учесть, что в клавиатурный буфер помещаются так называемые расширенные коды нажатых клавиш. Если нажимается любая алфавитно-цифровая клавиша, расширенный код совпадает с ASCII-кодом соответствующего символа. Например, если нажимается клавиша с латинской буквой «а» (в нижнем регистре), функция ReadKey возвращает значение chr(97), а если - «а» (в верхнем регистре) - значение chr(65). При нажатии функциональных клавиш F1...F10 (клавиш управления курсором), клавиш Ins, Home, Del, End, PgUp, PgDn в буфер помещается двухбайтовая последовательность: сначала символ #0, а затем расширенный код клавиши. Таким образом, значение #0, возвращаемое функцией ReadKey, используется исключительно для того, чтобы указать программе на генерацию расширенного кода. Получив это значение, программа должна еще раз обратиться к функции, чтобы прочитать расширенный код клавиши. Следующая простая программа позволит определить расширенный код любой клавиши. Для завершения работы программы нужно нажать клавишу esc. Uses CRT; Var с: char; Begin repeat c:= ReadKey; if c< >#0 then writeln (ord(c)) else writeln ('0', ord (ReadKey):8) until c=#27 {27 - расширенный код клавиши esc} end. Если вы воспользуетесь этой программой, то обнаружите, что нажатие на некоторые клавиши игнорируется функцией ReadKey. Это прежде всего так называемые сдвиговые клавиши - Shift, Ctrl, Alt. Сдвиговые клавиши в MS-DOS обычно используются для переключения регистров клавиатуры и нажимаются в сочетании с другими клавишами. Именно таким способом, например, различается ввод прописных и строчных букв. Кроме того, функция игнорирует переключающие клавиши Caps Lock, Num Lock, Scroll Lock. в таблице приведены расширенные коды клавиш, возвращаемые функцией ord(ReadKey). Расширенные коды клавиш Таблица |
Код | Клавиша или комбинация клавиш | Код | Клавиша или комбинация клавиш | | первый байт | второй байт | | первый байт | второй байт | | | Алфавитно-цифровые клавиши | | 8 | - | backspace (забой) | 9 | - | tab (табуляция) | | 13 | - | enter | 32 | - | пробел | | 33 | - | ! | 34 | - | « | | 35 | - | # | 36 | - | $ | | 37 | - | % | 38 | - | & | | 39 | - | " | 40 | - | ( | | 41 | - | ) | 42 | - | * | | 43 | - | + | 44 | - | , | | 45 | - | - | 46 | - | . | | 47 | - | / | 48...57 | - | 0...9 | | 58 | - | : | 59 | - | ; | | 60 | - | < | 61 | - | = | | 52 | - | > | 63 | - | ? | | 64 | - | @ | 65...90 | - | A...Z | | 91 | - | [ | 92 | - | / | | 93 | - | ] | 94 | - | ^ | | 95 | - | _ | 96 | - | " | | 97...122 | - | a...z | 123 | - | { | | 124 | - | ?? | 125 | - | } | | 126 | - | ~ | 128...159 | - | A...Я | | 160...175 | - | а...п | 224...239 | - | р...я | | Управляющие клавиши и их сочетания со сдвиговыми | | 0 | 3 | Ctrl-2 | 0 | 15 | Shift - Tab | | 0 | 16...25 | Alt-Q...Alt-P (верхний ряд букв) | 0 | 30...38 | Alt-A...Alt-L (средний ряд букв) | | 0 | 44...50 | Alt-Z...Alt-M (нижний ряд букв) | 0 | 59...68 72 | F1...F10 курсор вверх | | 0 | 71 | Home | 0 | 75 | курсор влево | | 0 | 73 | PgUp | 0 | 79 | End | | 0 | 77 | курсор вправо | 0 | 81 | PgDn | | 0 | 80 | курсор вниз | 0 | 83 | Del | | | окончание таблицы|
код | клавиша или комбинация клавиш | код | клавиша или комбинация клавиш | | первый байт | второй байт | | первый байт | второй байт | | | 0 | 82 | Ins | 0 | 94...103 | Ctrl-F1...Ctrl-F10 | | 0 | 84...93 | Shift-F1... Shift-F10 | 0 | 114 | Ctrl- PrtScr | | 0 | 104...113 | Alt-F1...Alt-F10 | 0 | 116 | Ctrl - курсор вправо | | 0 | 115 | Ctrl - курсор влево | 0 | 118 | Ctrl - PgDn | | 0 | 117 | Ctrl - End | 0 | 120...131 | alt-1...alt- = (верхний ряд клавиш) | | 0 | 119 | Ctrl - Home | | | | | 0 | 132 | Ctrl - PgUp | | | | | |
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
|