15.3.2. Переменные управления работой клавиатуры

15.3.2.1. Переменная CheckBreak. Эта переменная является логическим переключателем режима работы откомпилированной и скомпонованной программы. Если ее значение равно True (стартовое значение), то нажатие комбинации клавиш Ctrl+Break во время выполнения операций ввода-вывода будет прерывать работу программы. Нажатие Ctrl+Break не во время ввода-вывода информации не имеет эффекта.

Запись значения False в переменную CheckBreak вообще отключает механизм прерывания работы программы комбинацией Ctrl+Break.

- 322 -

Значение переменной можно менять многократно. Иногда полезно разрешать прерывание для одной части программы и запрещать для другой:

USES CRT; { подключен модуль CRT }

BEGIN

CheckBreak:= False ; { отключение контроля }

... { непрерываемая часть }

CheckBreak:= True; { включение контроля }

... { здесь возможно прервать программу }

END.

Если на клавиатуре нет клавиши Break, то ее заменяет клавиша ScrollLock, и комбинация прерывания будет соответственно Ctrl+ScrollLock.

15.3.2.2. Переменная CheckEOF. Эта переменная разрешает (True) или запрещает (False) ввод с клавиатуры кода признака конца файла (ASCII-код номер 26 — «End-Of-File»). Этот код вырабатывается нажатием комбинации клавиш Ctrl+Z.

Стартовое значение CheckEOF равно False, т.е. нажатие Ctrl+Z введет в строку символ #26 и не будет иметь управляющего воздействия. Если же поменять значение CheckEOF на True, то можно организовать ввод текстов построчно, заканчивая текст признаком конца файла так же, как это делается в среде MS-DOS по команде

COPY CON FILE.TXT,

например, как в примере на рис. 15.4.

Здесь функция EOF не имеет параметров. Это означает, что она ожидает ввод кода конца файла с текущего устройства, т.е. с

| PROGRAM CopyTextToFile; { программа ввода текста в файл }

| USES CRT;

| VAR

| f : Text; { имя логического файла }

| s : String[126]; { Максимальное число символов в }

| {строке, считываемой через процедуры Read(), ReadLn() }

| BEGIN

| ClrScr; { очистка экрана }

| Assign (f,'file.txt'); { файл на диске - file.txt }

| Rewrite ( f ); { открытие файла для записи }

| WriteLn( 'Введите текст:' );

| CheckEOF := True; { разрешение интерпретации #26 }

Рис. 15.4

- 323 -

| While not EOF do { считывать строки с клавиатуры }

| Begin { пока не нажато Ctrl+ z }

| ReadLn( s );

| WriteLn{ f, s) { запись строки в файл на диске }

| end;

| Close( f ) {закрытие файла на диске }

| END.

Рис. 15.4 (окончание)

клавиатуры через механизм CRT. Если бы не было строки CheckEOF:=True, то цикл WHILE был бы «вечным».