Объектно-ориентированное программирование. Модуль CRT. Вывод на экран. Системные переменные модуля CRT, страница 2

Rewrite ( Output );                             {Файл Output открывается для записи.}

Пустая строка в операторе Assing означает стандартное предопределенное устройство, как правило устройство CON.

Кроме ускорения вывода информации на дисплей, подключение модуля CRT вносит ряд дополнений и расширений в работу стандартных процедур Write, WriteLn, Read и ReadLn.

Вывод специальных символов.

При подключенном модуле CRT можно выводить на дисплей строки и символы, содержащие в себе управляющие коды (коды 0…31). При этом они не будут оказывать управляющие воздействия, а будут изображаться на дисплее, согласно таблице изображений символов по их ASCII-коду.

Исключение составляют лишь четыре кода:

Код

Управляющее воздействие

Название кода

7

($07)

Вызывает один короткий звук динамика

Bell

8

($08)

Сдвигает текущую позицию курсора влево на один символ, если есть куда сдвинуться в пределах строки; в противном случае не имеет эффекта

BackSpace

(BS)

10

($OA)

Переводит текущее положение курсора на строку ниже, не меняя текущего столбца

Line Feed

(LF)

13

($OD)

Переводит текущее положение курсора в начало строки

Carriage Return

(CR)

Системные переменные модуля CRT.

При подключении модуля CRT инициализируется ряд его системных констант и переменных. Константы используются как параметры в процедурах модуля CRT. Системные же переменные играют роль переключателей режимов работы механизмов ввода-вывода, реализованных в CRT.

  И константы, и переменные становятся глобальными и доступными программе, использующей модуль CRT, и их не надо описывать среди прочих идентификаторов. Так, например, в модуле CRT определена переменная DirectVideo типа Boolean, и ее стартовое значение равно True. Если надо сменить определяемый ею режим работы устройства CRT, то необходимо вставить в программу строку

USES  CRT;

  .  .  .

 BEGIN

  DirectVideo: = False;                                   { смена режима CRT }

  .  .  .                                                   

END.

Но если определить в программе такую же переменную, то доступ к оригиналу из CRT будет заблокирован. Теперь, чтобы все-таки сменить значение системной переменной, надо указывать ее принадлежность в виде определяющего поля:

USES  CRT;                                       

VAR     

DirectVideo:Boolean;                                               {Переопледеление системной переменной. Тип может быть и любым другим}

BEGIN

DirectVideo:=False;                                      {Не влияет на работу СRT}

CRT.DirectVideo:=False;                            {Режим работы CRT меняется.}

  .  .  .

END.

Программирование клавиатуры

Дополнительные возможности управления клавиатурой реализуются двумя функциями: KeyPressed и ReadKey.

Функция KeyPressed. Возвращает значение типа Boolean, указывающее состояние буфера клавиатуры: False означает, что буфер пуст, а True – что в буфере есть хотя бы один символ, не прочитанный программой.

Например, следующий пустой цикл может быть использован для реализации в программе паузы до нажатия любой клавиши:

Repeat

Until KeyPressed;

Замечание: функция KeyPressed не удаляет введённый символ из буфера клавиатуры. Это делает функция ReadKey, которая выполняет гораздо больше полезной работы.

Функция ReadKey. Возвращает значение типа Char. При обращении к этой функции анализируется буфер клавиатуры: если в нём есть хотя бы один не прочитанный символ, код этого символа берётся из буфера и возвращается в качестве значения функции, в противном случае функция будет ожидать нажатия на любую клавишу. Ввод символи с помощью этой функции не сопровождается эхо-повтором и содержимое экрана не меняется.

Текстовый вывод на экран