TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Текстовые файлы

В отличие от файлов других типов текстовые файлы не являются просто последовательностью элементов одного типа, а состоят из символов, объединённых в строки. Каждая строка завершается парой символов CR/LF (carriage-return/linefeed). Файл заканчивается маркером Ctrl-Z.

Поскольку строки могут быть различной длины, текстовые файлы могут образовываться только последовательно. Файл может быть открыт либо только на запись (Rewrite), либо только на чтение (Reset). В системе DOS имеется возможность открыть файл для расширений (Append). В этом случае после открытия указатель файла устанавливается в конец, файл рассматривается как открытый на запись.

Описание текстового файла

Описание типа текстового файла состоит из ключевого слова text.

Примеры

Type
TextType = text;
Var
OutFile : TextType
InpFile : text;

Тип TextType связан с набором строк, разделённых на символы и заканчивающихся последовательностью CR/LF.

OutFile и InpFile - имена текстовых файлов.

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

Внешние устройства указанных типов имеют свои символические обозначения, описываемые ниже.

Консоль

CON: - Консоль.

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

Ctrl-H Удаление символа слева от курсора и перемещение курсора на одну позицию влево.
Ctrl-X Удаление всех символов слева от курсора и возврат курсора на начало строки.
Ctrl-D Вставка на место, обозначенное курсором, одного символа из предыдущей строки и смещение курсора на одну позицию вправо.
Ctrl-R Вставка с положения курсора остальных символов предыдущей строки и перемещение курсора за последний вставленный символ.
CR, Ctrl-M Окончание ввода строки и помещение во входном буфере символов CR/LF.
Ctrl-Z Окончание ввода и помещение во входном буфере символа Ctrl-Z

Размер входного буфера консоли определён предопределённой переменной Buflen. По умолчанию размер этой переменной не более 127 символов. Новое значение переменной Buflen действительно по отношению к ближайшему оператору ввода. После выполнения оператора переменная Buflen снова принимает значение 127.

Устройства

    TRM: - терминал.

Терминал - это устройство ввода-вывода. Выходное консольное устройство - это экран дисплея, входное консольное устройство - клавиатура. В отличие от консоли входные данные с терминала не буферизуются. Это означает, что каждый вводимый символ тотчас обрабатывается, одновременно символ выводится на экран. Из управляющих символов это относится только к CR, который выводится как пара CR/LF.

    KBD: - клавиатура.

Клавиатура - это устройство ввода. Символы вводятся с консольного устройства ввода, не буферизуются и не выводятся на экран.

    LST: - печатающее устройство.

Печатающее устройство - устройство вывода. Выводимые символы не буферизуются в системе и не могут буферизоваться в печатающем устройстве.

    AUX: - вспомогательное устройство.

Вспомогательное устройство - это устройство ввода или вывода. В системе DOS это устройство COM1:.

    USR: - устройство, определяемое пользователем

Устройство, определяемое пользователем - это программное устройство. Оно допускает вмешательство в процесс передачи символов. Его использование связано с разработкой собственных программ передачи данных.

Соответствие текстовых файлов и логических устройств

Связь файла с логическим устройством может осуществляться с помощью процедуры Assign, в которой указывается имя файловой переменной и строковое выражение, определяющее название логического устройства. В отличие от связи файла с набором данных связь файла с логическим устройством влечёт за собой неявное открытие файла. Поэтому использование процедур Reset и Rewrite излишне, а их выполнение, как и выполнение процедуры Close, не приводит ни к каким результатам. Не следует пользоваться процедурами Erase и Remane, потому что их можно использовать только по отношению к наборам данных на дисках.

Процедура Assign связывает текстовый файл Console с логическим устройством CON:, т.е. с консолью, а затем неявно открывает его.

Для упрощения использования файлов, связанных с логическими устройствами, в Турбо Паскале введён ряд предопределённых файловых переменных, представляющих текстовые файлы, которые по умолчанию связаны с некоторыми логическими устройствами.

Как следует из таблицы, с предопределёнными именами файловых переменных связаны определённые логические устройства. Исключение составляют файловые переменные Input и Output, каждая из которых может представлять файл, связанный с устройством CON: или устройством TRM:.

Выбор CON: или TRM: происходит по директиве компилятора {$B+} или {$B-}. По умолчанию принимается {$B+}, файлы Input и Output связаны с устройством CON:. В области действия директивы {$B-} оба эти файла связаны с устройством TRM:.

Таблица - Соответствие текстовых файлов и логических устройств
Файловая переменная Логическое устройство
Input CON: или TRM:
Output CON: или TRM:
Con CON:
Trm TRM:
Kbd KBD:
Lst LST:
Aux AUX:
Usr USR:

Надо обратить внимание, что файлы, представляемые именами указанных файловых переменных, всегда открыты, а операции над ними касаются установленных логических устройств.

Пример:

begin
Writeln (Con,'Hello world')
end

Con - это предопределённая файловая переменная, представляющая файл, связанный с консолью.

После выполнения программы на консольное устройство будет выведен текст: Hello world.

Содержание 

На главную страницу
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz