Текстовые файлы связываются с файловыми переменными, принадлежащими к стандартному типу TextFile. Текстовые файлы предназначены для хранения текстовой информации. Именно в файлах такого типа хранятся, например, исходные тексты программ.
Записи текстового файла могут иметь переменную длину, что существенно влияет на характер работы с ними. Текстовый файл трактуется в Object Pascal как совокупность строк переменной длины (записей). Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой строки ставится специальный признак eoln (End Of LiNe – конец строки) последовательность кодов #13 и #10, а в конце всего файла – признак eof (End Of File – конец файла) код #26. Эти признаки можно проверить одноименными логическими функциями (см. ниже).
Для чтения, т.е. ввода из файла, строк из текстового файла используют процедуры read и readln, а для записи, т.е. вывода в файл применяются процедуры write, writeln, рассмотренные в разделе 3.9. Следует заметить, что первым параметром в них обязательно должна стоять файловая переменная того файла, с которым происходит работа.
Процедура readln идентична процедуре read за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера eoln пропускается, поэтому следующее обращение к readln начинается с первого символа новой строки. Если readln вызвать без параметров vi, то это приведет к пропуску всех символов текущей строки вплоть до eoln.
Следует заметить, что запись в текстовый файл всегда осуществляется через буфер. Сначала выводимые записи помещаются в буфер, а затем данные из буфера собственно и записываются в файл (по мере накопления). Для принудительного «сброса» буфера в файл пользуются процедурой flush. При вызове writelnбез параметров vi в файл выводится пустая строка.
В таблице 3.14 приведены процедуры и функции, предназначенные для работы с текстовыми файлами.
Таблица 3.14.Процедуры и функции для работы с текстовыми файлами
Procedure Append(var
F: TextFile);
Открывает существующий текстовый файл для записи, при этом указатель файла устанавливается в его конец.
Function Eoln(var
F: TextFile): Boolean;
Тестирует маркер конца строки и возвращает True, если конец строки достигнут
Procedure Flush(varF);
Очищает внутренний буфер файла и, таким образом, гарантирует сохранность всех последних изменений файла на диске
Читает из текстового файла последовательность символьных представлений переменных Vi типа char, String, а также любого целого или вещественного типа, игнорируя признаки EOLN
Читает из текстового файла последовательность символьных представлений переменных Vi типа char, String, а также любого целого или вещественного типа с учетом границ строк
Function SeekEof
(var F: Text): Boolean;
Пропускает все пробелы, знаки табуляции и маркеры конца строки eoln до маркера конца файла eof или до первого значащего символа и возвращает True, если маркер eof обнаружен
Function SeekEoln
(var F: TextFile):
Boolean;
Пропускает все пробелы и знаки табуляции до маркера конца строки eoln или до первого значащего символа и возвращает True, если маркер обнаружен