Процедура AssignCRT(VAR f : Text) перенаправляет вывод на фиктивное устройство CRT. Устройство CRT активизируется при подключении модуля CRT директивой USES. Оно начинает выполнять функции ввода-вывода средствами библиотеки Турбо Паскаля взамен стандартных процедур MS-DOS. Подробно об этом писалось
- 344 -
в начале этой главы. При подключении модуля CRT стандартный ввод в вывод автоматически связывается с механизмами CRT. Но если вводятся файлы, отличные от стандартных, то для использования устройства CRT надо эти файлы связывать с ним. А это возможно только через процедуру AssignCRT.
Рассмотрим каркас программы (рис. 15.17), перенаправляющей файлы.
| USES CRT; { используется модуль CRT } VAR
| f : Text; { текстовый логический файл }
| BEGIN
| Assign( f, 'LPT2' ); { файл f связан с принтером }
| Rewrite( f ); { файл f открыт для вывода }
| WriteLn( f, ...); { вывод данных на печать }
| Close( f ); { файл f (LPT2) закрыт }
| AssignCRT( f ); { Файл f связан с устройством CRT }
| { и использует его механизмы быстрого вывода. }
| Rewrite( f ); { файл f открыт для вывода }
| WriteLn( f, ...}; { быстрый вывод на монитор }
| Close( f ); { файл все равно надо закрыть }
| END.
Рис. 15.17
Отметим, что никаким другим способом нельзя связать объявленный в программе файл с фиктивным устройством CRT. Наивные попытки использовать для этого процедуру Assign, типа
Assign( f, 'CRT' ); Rewrite( f );
организуют на диске файл с именем 'crt' (случай Rewrite ((f)) или вообще дадут ошибку (случай Reset (f), если файла 'crt' не существует).
При использовании вывода в устройство CRT уже нельзя будет организовать перенаправление потоков ввода-вывода при запуске откомпилированной программы в MS-DOS из командной строки. Но перенаправление станет возможным, если связать файлы в программе со стандартным устройством MS-DOS.
- 345 -
Глава 16. Модуль DOS
В системном модуле DOS, имеющем размер около 6K, реализовано большое число процедур и функций, ориентированных на работу со средой MS-DOS и использующих ее возможности. Все они отсутствуют в стандартном Паскале. Заметим, что системная библиотека Турбо Паскаля реализует много функций, специфичных для MS-DOS (например, ChDir, ParamStr и т.п.), которые, однако, оставлены в основной библиотеке, а не вынесены в модуль DOS. Но это все функции более высокого уровня, а те, которые предоставляет модуль DOS, являются инструментом доступа к «низкоуровневым» операциям MS-DOS.
Многие из реализуемых DOS процедур или функций — это просто оформленные в синтаксисе языка Паскаль вызовы функций MS-DOS. Таковы, например, почти все средства работы с файлами.
Модуль DOS при его подключении вводит большое количество констант и предопределенных типов. Их смысл до конца может быть понятен лишь опытному системному программисту. Мы же не стремимся превратить изложение Турбо Паскаля в книгу по MS-DOS и просто постараемся показать, как их можно использовать в прикладных программах.
В этой главе процедуры и функции сгруппированы по их функциональному смыслу. В соответствующих разделах будут рассматриваться константы и типы модуля DOS. Всего же в модуле DOS можно насчитать шесть функциональных групп:
— опрос и установка параметров (ключей) MS-DOS;
— работа с часами и календарем ПЭВМ;
— анализ ресурсов дисков;
— работа с каталогами и файлами;
— работа с прерываниями MS-DOS;
— организация субпроцессов и резидентных программ.
Отметим, что в отличие от модуля CRT подключение модуля DOS без использования его программ не дает видимого эффекта (хотя и привносит предопределенные типы, переменные и константы).
- 346 -
16.1. Опрос и установка параметров MS-DOS
Команды опроса и установки параметров реализованы процедурами и функциями, приведенными в табл. 16.1.