Текстовые файлы
Кроме описанных выше файлов в Delphi применяется специальный вид файлов предназначенный в основном для работы с текстовой информацией. Этот тип файлов объявляется с помощью служебного слова TextFile, например:
Var f:TextFile;
Работа с текстовыми файлами немного отличается от работы с обычного файла. Информация в таких файлах хранится постоянно. Компонентами текстовых файлов являются строки различной длины, разделенных между собой специальным признаком конца строки. Компоненты текстовых файлов не индексируются, поэтому произвольный доступ к ним невозможен.
Структура текстового файла
Логическую структуру текстового файла можно изобразить в виде следующей схемы:
Текстовый файл трактуется в Object Pascal как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой строки ставится специальный признак eoln (End Of LiNe - конец строки), а в конце всего файла - признак eof (End Of File - конец файла). Эти признаки можно протестировать одноименными логическими функциями (см. ниже). При формировании текстовых файлов используются следующие системные соглашения:
eoln - последовательность кодов #13 (cr) и #10 (lf);
EOF -КОД #26.
В Delphi 7 при создании межплатформенных приложений признаком конца строки считается один символ LF(#10).
Для доступа к записям применяются процедуры Read, ReadLn, write, writebn. Они отличаются возможностью обращения к ним с переменным числом фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур должна стоять файловая переменная. Обращение осуществляется к дисковому файлу, связанному С Переменной Процедурой AssignFile.
Подпрограммы для работы с текстовыми файлами
Function Eoln(var F: TextFile): Boolean; |
Тестирует маркер конца строки и возвращает True, если конец строки достигнут |
Procedure Read(var F: TextFile; V1 [,V2,...,Vn ]); |
Читает из текстового файла последовательность символьных представлении переменных Vi типа char. String, а также любого целого или вещественного типа, игнорируя признаки EOLN |
Procedure ReadLn (var F: TextFile; [VI [, V2, ...,Vn]]); |
Читает из текстового файла последовательность символьных представлении переменных Vi типа char, String, а также любого целого или вещественного типа с учетом границ строк |
Function SeekEof(var F: Text): Boolean; |
Пропускает все пробелы, знаки табуляции и маркеры конца строки eoln до маркера конца файла eof или до первого значащего символа и возвращает True, если маркер eof обнаружен |
Function SeekEoln (var F: TextFile): Boolean; |
Пропускает все пробелы и знаки табуляции до маркера конца строки eoln или до первого значащего символа и возвращает True, если маркер обнаружен |
Procedure Write(var F: Text; PI [,P2,..., Pn] ) ; |
Записывает символьные представления параметров Pi в текстовый файл |
Procedure WriteLn (var F: Text; [PI [, P2, ..., Pn]]); |
Записывает символьные представления параметров Pi и при знак конца строки eoln в текстовый файл |
Контрольные вопросы
1. Назовите основные отличия текстовых файлов от типизированных файлов.
2. Назовите основные процедуры и функции, предназначенные для работы с текстовыми файлами.