Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-методическое пособие по Паскалю.doc
Скачиваний:
9
Добавлен:
25.04.2019
Размер:
398.34 Кб
Скачать

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

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

Конец строки можно определить с помощью функции:

EOLn (<ф.п.>);

Для записи данных в файл используются процедуры WRITE и WRITELN:

Write (<ф.п.>,<список вывода стрингов>);

Writeln (<ф.п.>,<список вывода стрингов>).

По предложению WRITE значения данных из списка запишутся в файл подряд, без всяких разделителей.

По предложению WRITELN в файле после каждого выведенного стрингового значения будут записаны признаки конца строки.

Для чтения данных из файла используются процедуры READ и READLN:

Read(<ф.п.>,<список выводимых стрингов>);

Readln(<ф.п.>,<список вводимых стрингов>).

По предложению READ из файла выбирается столько символов, сколько указано в описании текущего стринга, принадлежащего списку ввода. Выбранная последовательность символов присваивается текущему стрингу. Эта совокупность операций повторяется для всех элементов списков ввода. По предложению READLN из файла последовательно считываются строки и присваиваются стрингам из списков. Если выбранная строка имеет большее количество символов, чем указано в описании текущего стринга, то она обрезается до указанной длины, при этом часть информации теряется. Поэтому необходимо следить за соответствием длин стрингов, записываемых в файл и считываемых из файла.

8.4 Типизированные файлы

Длина любого компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому из них (т.е. доступ к компоненту по его порядковому номеру).

Перед первым обращением к процедурам ввода-вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Переменные в списках ввода-вывода должны иметь тот же тип, что и компоненты файла. Если этих переменных в списке несколько, указатель будет смещаться после каждой операции обмена данными между переменными и дисковым файлом.

Процедура READ. Обеспечивает чтение очередных компонентов типизированного файла. Формат обращения:

READ (<ф.п.>, <сп. ввода>)

Здесь <сп. ввода> - список ввода, содержащий одну или более переменных такого же типа, что и компоненты файла.

Файловая переменная <ф.п.> должна быть объявлена предложением FILE OF... и связана с именем файла процедурой RESET. Если файл исчерпан, обращение к READ вызовет ошибку ввода -вывода.

Процедура WRITE. Используется для записи данных в типизированный файл. Формат обращения:

WRITE (<ф.п.>, <сп.вывода>)

Здесь <сп. ввода> - список вывода, содержащий одно или более выражений того же типа, что и компоненты файла.

Процедура SEEK. Смещает указатель файла к требуемому компоненту. Формат обращения:

SEEK (<ф.п.>, <N компонента>)

Здесь <N компонента> - выражение типа LONGINT, указывающее номер компонента файла.

Первый компонент файла имеет номер 0. Процедуру нельзя применять к текстовым файлам.

Функция FILESIZE. Возвращает значение типа LONGINT, которое содержит количество компонентов файла. Формат обращения:

FILESIZE (<ф.п.>)

Функцию нельзя использовать для текстовых файлов. Чтобы переместить указатель в конец типизированного файла, можно написать:

seek (FileVar, FileSize (FileVar));

где FILEVAR - файловая переменная.

Функция FILEPOS. Возвращает значение типа LONGINT, содержащее порядковый номер компонента файла, который будет обрабатываться следующей операцией ввода-вывода. Формат обращения:

FILEPOS (<ф.п.>)

Функцию нельзя использовать для текстовых файлов. Первый компонент файла имеет порядковый номер 0.