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

Процедура AssignCRT из модуля CRT будет рассмотрена в разд. 15.4.8. Она аналогична по сути процедуре

Assign( логический файл, физический файл или устройство ),

но связывает логический файл с фиктивным устройством CRT.

- 316 -

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

Если же по каким-либо причинам пользователь хочет восстановить стандартную связь файлов Input и (или) Output, т.е. отказаться от «услуг» подключенного модуля CRT, то в его программе должны быть следующие операторы:

Assign( Input, ' '); { Файл Input связывается со стандарт-}

{ ным устройством ввода (чтения). }

Reset ( Input ); { Файл Input открывается для чтения. }

Assign ( Output, ' '); {Файл Output связывается со стандарт-}

{ ным устройством вывода (записи). }

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

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

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

<p>15.1. Вывод специальных символов</p>

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

Таблица 15.1

Код

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

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

($07)

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

Bell

($08)

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

BackSpace (BS)

($0A)

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

Line Feed (LF)

($0D)

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

Carriage Return (CR)

- 317 -

Ниже приводится ряд программ (рис. 15.2 и 15.3), показывающих работу с управляющими символами.

| Программа вывода изображений управляющих кодов }

| USES CRT; { Используется модуль CRT }

| CONST

| SpecialChars : Set of Char = [ #7, #8, #10, #13 ];

| { символы из таблицы }

| Ch : Char = #0; { переменная-символ }

| VAR i : Byte; { параметр цикла }

| BEGIN

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

| while Ch < #32 do { цикл по #0...#31 }

| begin

| for i:=1 to 2 do begin

| Write ( ' Код', Ord( Ch ):3, ' -—> ');

| if ( Ch in SpecialChars )

| then Write ( ' Имеет действие' )

| else Write ( Ch:15 );

| Ch := Succ( Ch ); { следующий символ }

| end; {for}

| WriteLn { закрытие строки }

| end; { конец цикла while }

| Write ( 'Нажмите ввод для окончания ...' );

| ReadLn { пауза до нажатия клавиши ввода }

| END.

Рис. 15.2

| {Программа использования 4-х управляющих кодов экрана }

| USES CRT; { используется модуль CRT }

| VAR i : Byte; { переменная для цикла }

| BEGIN

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

| WriteLn ( 'Нажимайте клавишу ввода для продолжения' );

| ReadLn;

| WriteLn ( ' Эффект от кода 7 - короткий звук'#7 );

| WriteLn; WriteLn; ReadLn;

| WriteLn ( ' Демонстрация кода возврата - #8 (BS)' );

| for i:=1 to 40 do Write('/'); { 40 правых косых скобок }

| for i:=1 to 40 do begin

| Delay ( 100); { задержка в 100 мс }

| Write ( #8, '\', #8 ); { Передвижение на символ }

| { влево, замена на '\' и снова один сдвиг влево }

Рис. 15.3

- 318 -

| end; {for}

Перейти на страницу:

Поиск

Похожие книги