15.3.2.1. Переменная CheckBreak. Эта переменная является логическим переключателем режима работы откомпилированной и скомпонованной программы. Если ее значение равно True (стартовое значение), то нажатие комбинации клавиш Ctrl+Break во время выполнения операций ввода-вывода будет прерывать работу программы. Нажатие Ctrl+Break не во время ввода-вывода информации не имеет эффекта.
Запись значения False в переменную CheckBreak вообще отключает механизм прерывания работы программы комбинацией Ctrl+Break. {321}
Значение переменной можно менять многократно. Иногда полезно разрешать прерывание для одной части программы и запрещать для другой:
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 {322}
While not EOF do { считывать строки с клавиатуры }
Begin { пока не нажато Ctrl+ z }
ReadLn( s );
WriteLn{ f, s) { запись строки в файл на диске }
end;
Close( f ) {закрытие файла на диске }
END.
Рис. 15.4 (окончание)
клавиатуры через механизм CRT. Если бы не было строки CheckEOF:=True, то цикл WHILE был бы «вечным».