Иллюстрированный самоучитель по Turbo Pascal

Текстовые файлы

Процедура 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.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.