Особое место в языке ПАСКАЛЬ занимают текстовые файлы,  компоненты которых имеют символьный тип.  Для описания текстовых файлов в  языке определен стандартный тип Тext: 

         var    TF1, TF2: Text;

   Текстовые файлы  представляют  собой  последовательность строк,  а строки - последовательность символов.  Строки имеют переменную длину, каждая строка завершается признаком конца строки.

   С признаком конца строки связана функция EOLn(var T:Text):Boolean, где Т - имя  текстового  файла. Эта функция принимает значение TRUE, если достигнут конец строки, и значение FALSE, если  конец строки не достигнут.

   Для операций над текстовыми файлами,  кроме перечисленных, определены также операторы обращения к процедурам: 

   ReadLn(T) - пропускает строку до начала следующей;

   WriteLn(T) -  завершает  строку файла,  в которую производится запись, признаком конца строки и переходит к началу следующей.

   Для работы с текстовыми файлами введена расширенная форма операторов ввода и вывода. Оператор 

    Read(T,X1,X2,...XK) 

 эквивалентен группе операторов 

    begin

      Read(T,X1);

      Read(T,X2);

      ...........

      Read(T,XK)

    end;

 

   Здесь Т - текстовый файл, а переменные Х1, Х2,...ХК могут быть либо  переменными целого, действительного или символьного типа,  либо строкой. При чтении значений переменных из файла они преобразуются из текстового представления в машинное.

   Оператор

    Write(T,X1,X2,...XK) 

эквивалентен группе операторов 

    begin

      Write(T,X1);

      Write(T,X2);

      ...........

      Write(T,XK)

    end; 

   Здесь Т -  также текстовый файл,  но переменные Х1,Х2,...ХК могут быть целого, действительного, символьного, логического типа или строкой. При записи значений переменных в файл они преобразуются из внутреннего представления в текстовый.

   К текстовым файлам относятся стандартные файлы INPUT, OUTPUT.

   Рассмотренные ранее операторы ввода - вывода являются частным случаем операторов обмена с текстовыми файлами, когда используются стандартные файлы ввода - вывода INPUT, OUTPUT.

   Работа с этими файлами имеет особенности:

   - имена этих файлов в списках ввода - вывода не указываются;

   - применение процедур  Reset, Rewrite и Close к стандартным файлам ввода - вывода запрещено;

   - для работы с файлами INPUT,  OUTPUT введена разновидность функции EOLn без параметров.

   TURBO PASCAL вводит дополнительные процедуры и функции, применимые только к текстовым файлам,  это SetTextBuf,  Append, Flush, SeekEOLn, SeekEOF.

   Процедура SetTextBuf( var f: Text; var Buf; BufSize: Word ) служит для увеличения  или уменьшения буфера ввода - вывода текстового файла f. Значение  размера буфера для текстовых файлов по  умолчанию  равно 128 байтам.  Увеличение размера буфера сокращает количество обращений к диску.  Рекомендуется изменять разиер буфера до открытия файла. Буфер файла начнется с первого байта переменной Buf. Размер буфера задается в необязательном параметре BufSize,  а если этот параметр  отсутствует, размер буфера определяется длиной переменной Buf.

   Процедура Append( var f:  Text ) служит для специального открытия выходных файлов. Она применима к уже существующим физическим файлам и открывает из для дозаписи в конец файла.

   Процедура Flush(  var  f: Text )  применяется к открытым выходным файлам. Она  принудительно записывает данные из буфера в файл независимо от степени его заполнения.

   Функция SeekEOLn( var f: Text ): Boolean возвращает значение True, если до конца строки остались только пробелы.

   Функция SeekEOF( var f:  Text ): Boolean возвращает значение True, если до конца файла остались строки, заполненные пробелами.