Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO_PASCAL.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
8.23 Mб
Скачать

15.3.1. Переменные управления выводом на дисплей

15.3.1.1. Переменная CheckSnow. На цветных дисплеях с видеоадаптером CGA могут наблюдаться белые штрихи при смене изображения или выводе информации. Это явление (Snow — в переводе {320} с английского «снег») вызвано рассогласованием между обновлением видеопамяти и сменой изображения. Оно может быть снято программным путем. Механизм снятия «снега» реализован в модуле CRT и управляется логической переменной CheckSnow. Если ее значение установлено равным True, то будет включен механизм согласования, и эффект «снега» не возникнет. При этом несколько замедлится вывод символов на экран. Для прочих дисплейных адаптеров (EGA, VGA, MDA/Hercules и др.) и для адаптеров CGA без эффекта «снега» имеет смысл поддерживать значение CheckSnow равным False. Это ускорит вывод текстовой информации на экран дисплея.

После вызова процедуры TextMode значение CheckSnow всегда автоматически устанавливается равным False.

Переменная CheckSnow зависит от состояния другой переменной модуля CRT — DirectVideo. Если последняя равна False, то значение CheckSnow не играет роли.

15.3.1.2. Переменная DirectVideo. Она устанавливает режим записи информации в видеопамять при выполнении операторов Write и WriteLn, выводящих информацию на дисплей через механизм CRT (этот механизм включается автоматически при подключении модуля CRT).

Стартовое значение логической переменной DirectVideo равно True. Это же значение устанавливается после каждого вызова процедуры TextMode. При таком значении вывод информации на дисплей производится максимально быстрым способом. После записи значения False в DirectVideo вывод на экран производится медленнее.

Трудно указать причины, когда может понадобиться смена значения DirectVideo с True на False, кроме, может быть, написания системных программ и драйверов устройств, но если необходимо это сделать, то надо помнить о переустановке значения переменной после вызова процедуры TextMode.

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

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 был бы «вечным».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]