Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ахмадулин Р.К. технологии программирования.doc
Скачиваний:
9
Добавлен:
10.11.2019
Размер:
615.94 Кб
Скачать

Вопросы для самопроверки

1. Что такое нетипизированные файлы?

2. Как описываются нетипизированные файлы в языке Паскаль?

3. Какие операции над нетипизированными файлами Вы знаете?

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

Текстовые файлы представляют собой последовательность строк произвольной длины.

Если Ваша программа считывает данные из текстового файла, то входной файл для такой программы можно создать, например, в Блокноте.

В текстовом файле можно хранить и целочисленные, и вещественные значения. При этом в отличие от типизированных файлов, открыв такой файл в том же Блокноте, мы увидим числа в привычной десятеричной системе.

Описание типизированных файлов

Для описания текстовых файлов в языке определен стандартный тип Тext:

var f1, f2: text;

Пример: описание текстового файла в разделе var

var

t: text;

Чтение и запись

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

Readln(T, x1, x2, …, xN) – реализует чтение из файла T N значений исходных данных и пропуск остальных значений до начала следующей строки. Считанные значения присваиваются переменным x1, x2, ..., xN.

Readln(T) – пропускает в файле T одну строку данных.

Writeln(T, x1, x2, …, xN) – реализует вывод в файл T значений x1, x2, ..., xN и переход к началу следующей строки.

Writeln(T) – вставляет признак конца строки в текущую позицию файла T.

Здесь Т –текстовый файл, а переменные x1, x2, …, xN могут быть целого, действительного, символьного, логического типа или строкой. При записи значений переменных в файл они преобразуются из внутреннего представления в текстовый.

Конец строки и конец файла

Строки в тестовых файлах имеют переменную длину.

Каждая строка завершается признаком конца строки. Проверить, достигнут ли признак конца строки, можно с помощью функции:

EOLn (var T: Text): Boolean;

где Т – имя текстового файла. Функция возвращает значение True, если конец строки достигнут, и значение False, если конец строки не достигнут.

При работе с текстовыми файлами бывает удобно также использовать функцию

SeekEOLn(var T: Text): Boolean;

которая возвращает значение True даже в том случае, если конец строки еще не достигнут, но до него остались лишь пробелы.

Аналогичная функция существует и для проверки признака конца файла:

SeekEOF(var f: Text): Boolean;

Функция возвращает значение True, если до конца файла остались лишь пустые строки и строки, заполненные пробелами.

Дополнительные процедуры для работы с текстовыми файлами

В Паскале существуют и дополнительные процедуры и функции, применимые только к текстовым файлам. Рассмотрим их подробнее.

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

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

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