Другая разновидность физических файлов — это устройства MS-DOS. MS-DOS не делает особого различия между «традиционными» файлами и устройствами (портами коммуникаций). Устройства имеют свои фиксированные имена и во многом схожи с файлами: имя устройства, например, может встать на место имени файла на диске при копировании. Имена устройств
- 222 -
MS-DOS и необходимые замечания по ним сведены в табл. 12.1.
Таблица 12.1
Имя | Расшифровка устройства | Примечание |
CON | Консоль (клавиатура и экран) | Ввод из CON — это чтение с клавиатуры, а вывод в CON — это запись на экран |
LPT1 LPT2 LPT3 | Параллельные порты (типа Centronix) номер 1…3 (если установлены) | Через эти имена файлов происходит вывод данных на принтеры или другие устройства с интерфейсом типа Centronix |
PRN | Принтер. Синоним имени LPT1 | Имя обращения к принтеру, включенному в порт LPT1 |
COM1 COM2 | Последовательные порты (типа RS-232) номер 1..2 (если установлены) | Имена файлов-устройств для ввода-вывода данных через серийные порты коммуникации. |
AUX | Синоним имени COM1 | Файл-устройство COM1 |
NUL | Фиктивное устройство | Это бездонный файл, принимающий что угодно, но всегда пустой |
Физические файлы-устройства организуются как текстовые файлы, и для нормальной работы их надо связывать с текстовыми логическими файлами. Хотя, если понадобится, можно устанавливать связь и с бестиповымн файлами (например, при работе с 'COM1' или 'COM2').
Как видно из табл. 12.1, у устройства есть свои особенности. Например, 'CON' — одно имя двух устройств. Если логический файл, которому назначено устройство 'CON', открывается для чтения, то в действительности он связывается с клавиатурой, но если для записи, то — с экраном! В то же время 'LPT1'...'LPT3', 'PRN', а с ним и 'NUL', могут быть открыты только для записи в них, а если все же они открыты для чтения, то сразу же возвращают признак конца файла. Никакого сбоя при этом не будет. Серийные порты — двусторонние. Позволяют считывать из себя и принимать данные. «Файл-пустышка» 'NUL' нужен для отладки программ, использующих другие порты.
Имена физических файлов-устройств должны быть записаны так же, как и в таблице: без точек и прочих знаков после них. Регистр букв роли не играет: 'CON', 'con' — консоль, 'PRN' — принтер, но
- 223 -
'CON.' — это файл на текущем диске, с именем CON и пустым расширением. Можно приписывать после имени устройства двоеточие, но лучше обходится без этого. Так, 'PRN' и 'PRN:' — это одно и то же.
Не определена такая структура данных, как файл в памяти ПЭВМ. Любой объявленный логический файл имеет смысл только после связи с внешним физическим файлом.
Турбо Паскаль позволяет программировать собственные механизмы для работы с периферией ПЭВМ или виртуальными устройствами — так называемые драйверы текстовых устройств. Но для этого надо вручную переписать почти всю библиотеку процедур работы с файлами. Заинтересованные читатели могут найти нужную им информацию в справочном руководстве по Турбо Паскалю [2].
12.3. Понятие буфера ввода-вывода
С файловой системой Турбо Паскаль связано понятие буфера ввода-вывода. Может показаться странным, но если выполнилась команда записи данных в файл на диске, то это вовсе не означает, что на диске действительно появились новые данные. Вывода данных (как впрочем, и ввод), осуществляется через буфер. Буфер – это область в памяти, отводимая при открытии файла. При записи в файл вся информация сначала направляется в буфер и там накапливается до тех пор, пока весь объем буфера не будет заполнен. Только после этого или после специальной команды сброса буфера происходит передача данных по предназначению: на диск, порт. Аналогично при чтении из файла считывает не столько, сколько запрашивается, с сколько уместится в буфер. И если, например, считывается 4 числа, а буфер вмещает 64, то следующие 60 чисел будут считаны уже из буфера.
Механизм буферизации позволяет более быстро и эффективно обмениваться информацией с различными устройствами. Для текстовых и бестиповых файлов можно устанавливать размер буфера по своему усмотрению.
Вывод текстовой информации на экран реализован так, что эффект буферизации исчезает автоматически, иначе компьютер постоянно «недоговаривал» бы свои ответы.
12.4. Файловые типы Турбо Паскаля
Турбо Паскаль поддерживает три файловых типа:
— текстовые файлы (типа Text);
- 224 -