Текстовые файлы
Процедура WRITELN
Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая строка символов завершается кодами CR и LF. При вызове WRITELN можно опускать параметр <сп.вывода>: в этом случае в файл передается маркер EOLN, что при выводе на экран приведет к переводу курсор" в начало следующей строки.
Логическая функция EOLN. Возвращает TRUE, если во входном текстовом файле достигнут маркер конца строки. Формат обращения:
EOLN<ф.п.>
Если параметр <ф.п.> опущен, функция проверяет стандартный файл INPUT.
Существует некоторое отличие в работе функций EOLN и EOF с дисковыми файлами и логическими устройствами. Дело в том, что для логического устройства невозможно предвидеть, каким будет результат чтения очередного символа. Поэтому при работе с логическим устройством функция EOLN возвращает TRUE, если последним считанным с устройства символом был EOLN или EOF, в то время как при чтении с диска TRUE возвращается в случае, если следующим считываемым символом будет EOLN или EOF.
Аналогичное различие наблюдается и в функции EOF: для логического устройства TRUE возвращается в случае, если последним символом был EOF, а при чтении с диска – если следующим считываемым символом будет EOF. Иными словами, функции тестируют соответствующие признаки для логического устройства после очередного чтения, а для файла – перед чтением.
Логическая функция SEEKEOLN
Пропускает все пробелы и знаки табуляции до маркера конца строки EOLN или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:
SEEKEOLN (<ф.п.>)
Если параметр <ф.п.> опущен, функция проверяет стандартный файл INPUT.
Логическая функция SEEKEOF
Пропускает все пробелы, знаки табуляции и маркеры конца строки EOLN до маркера конца файла или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:
SEEKEOF (<ф.п.>)
Если параметр <ф.п.> опущен, функция проверяет стандартный файл INPUT.
В следующем примере, иллюстрирующем работу с текстовым файлом, подсчитывается общее количество символов в файле и результат делится на 40000 – таким способом можно оценить объем рукописи в так называемых учетно-издательских листах:
var f: text; s: String; const Sum: LongInt = 0; {Здесь будет количество символов} begin Write('Имя файла: '); {Запрашиваем…} Readln(s); {и вводим имя файла.} assign(f,s); Reset (f); {Открываем файл} while not EOF(f) do {Подсчитываем…} begin {количество…} ReadLn(f,s); {символов…} inc(Sum, Length(s)) {в файле} end; Close(f); {Закрываем файл} WriteLn('Объем = ', Sum/40000: 6:2,' уч.изд.л.') end.