Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов. Для описания используется стандартный тип Text:
var
F: text; {F — файловая переменная}
Каждая строка завершается маркером конца строки. На практике такой маркер представляет собой последовательность из двух символов: перевод строки chr(13) и возврат каретки chr(10). Эти два символа задают стандартные действия по управлению текстовыми файлами. Открываемые по умолчанию стандартные файлы Input и Output в модуле System имеют тип Text. У текстовых файлов есть своя специфика. Специальные расширения стандартных процедур чтения (Read) и записи (Write) разрешают работать со значениями несимвольного типа. Другими словами, последовательность символов автоматически преобразуется к значению того типа переменной, которая используется в файловых операциях.
Текстовый файл в силу своей специфики во время работы допускает только один вид операции: чтение или запись. В связи с этим для работы с текстовыми файлами используется еще одна процедура открытия файла:
Append(vaг F : text);
Эта процедура открывает уже существующий файл и позиционирует указатель обработки на конец файла. После этого в текстовый файл можно только добавлять информацию, причем только в конец файла. На процедуру Append накладываются те же ограничения, что и на процедуры Reset и Rewrite.
Для обработки текстовых файлов используются процедуры Read и Write, обеспечивающие соответственно чтение и запись одной строки и более в текстовый файл. Использование специальных разделителей строк позволило ввести в состав языковых средств еще две процедуры: Readln, выполняющую те же действия, что и Read, и дополнительно – чтение до маркера конца строки и переход к новой строке; Writeln, обеспечивающую запись всех величин с обязательной установкой маркера конца строки в файл.
Процедура Read обеспечивает ввод данных общим потоком из одной строки, a Readln приводит к обязательному переходу к следующей строке текстового файла, т. е. ввод данных осуществляется из различных строк. Все вышесказанное в равной мере относится к операциям записи с помощью процедур Write и Writeln.
При организации операций ввода-вывода используются специальные языковые средства в виде функций Eoln, Eof, SeekEoln, SeekEof.
Функция Eoln(var F: text) возвращает булевское значение True, если текущая файловая позиция находится на маркере конца строки или вызов Eof(F) вернул значение True. Во всех остальных случаях значение функции будет False.
Функция SeekEoln(var F: text) возвращает булевское значение True при достижении маркера конца строки, причем указатель файла пропускает все пробелы и знаки табуляции, предшествующие маркеру. В противном случае функция возвращает значение False.
Функция SeekEof(var F: text) возвращает значение True, если указатель файла находится на маркере конца файла. Эта функция также пропускает все пробелы и знаки табуляции, предшествующие маркеру, и выполняет автоматический пропуск маркера конца строки. Характерным примером использования этих функций может служить чтение числовых величин из текстового файла, когда необходимо пропустить обработку разделяющих эти числа пробелов или знаков табуляции.