Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопросы к экзамену 1-2сем.doc
Скачиваний:
10
Добавлен:
23.09.2019
Размер:
186.88 Кб
Скачать

8.Типизированные файлы. Процедуры и функции для типизированных файлов.

Один и тот же физический файл можно по-разному представить в программе. Язык Турбо Паскаль предлагает три вида такого представления:

- типизированные файлы,

- текстовые файлы,

- не типизированные файлы.

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

Описание файлового типа имеет синтаксис:

file of < тип элементов>;

Допустим, мы имеем дело с файлом, в котором записываются переменные типа Word, тогда переменная файлового типа может быть введена двояко: с явным объявлением файлового типа:

Type

WordFile = file of word;

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

Вспомним, что типизированный файл – это последовательность элементов одного типа. А раз так, то при последовательном обращении к файлу текущий указатель переходит от элемента к элементу. Возникает вопрос: можно ли игнорировать последовательный доступ к файлу и сразу, например, обратиться к третьему элементу файла? Оказывается, можно.

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

Seek (МуFilе, n)

где n – требуемое положение указателя.

Внимание! Нумерация элементов типизированного файла начинается с нуля.

Поэтому, чтобы обратиться к третьму элементу, нужно записать Seek (МуFilе, 2).

Seek (МуFilе, 0) – устанавливает указатель в начальной позиции (на первый элемент).

Seek (МуFilе, FileSize(МуFilе)) – устанавливает указатель после последнего элемента, то есть на признак конца файла.

Примечание. Функция FileSize(МуFilе) возвращает количество элементов типизированного файла МуFilе.

Текущую позицию указателя дает функция

FilePos (МуFilе).

Функция ioResult

Функция IOResult предназначена для поиска ошибок, возникающих при работе с файлами. Эта функция возвращает результат последней операции ввода/вывода, если автоматический контроль за ошибками, возникающими при выполнении операций ввода/вывода, отключен с помощью директивы компилятора {$I-}. При безошибочном выполнении операций ввода/вывода функция IOResult всегда возвращает результат равный нулю. Поэтому, как правило, ее используют в операции сравнения с нулем. При использовании функции IOResult нужно помнить о том, что она возвращает величину, которую можно интерпретировать как флаг ошибки лишь в том случае, когда эта функция вызывается следом за операцией ввода/вывода. А если Вы хотите провести анализ ошибки позже, Вам придется сохранить возвращаемое значение в некоторой промежуточной переменной.

9.Нетипизированные файлы. Процедуры и функции для нетипизированных файлов.

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

Эти файлы в отличие от уже рассмотренных не имеют строго определенного типа.

Не типизированный файл рассматривается в Паскале как совокупность символов или байтов. Представление char или byte не играет никакой роли, важен лишь объем занимаемых данных.

Такое представление стирает различия между файлами независимо от типа их объявления. На практике это приводит к тому, что любой файл, подготовленный как текстовый или типизированный, можно открыть и начать работу с ним, как с нетипизированным набором данных.

Для определения в программе не типизированного файла служит зарезервированное слово file:

Var MyFile : file;

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

assign (МуFilе, 'с:\МуDirectory\result.dat') - процедура связывания логической файловой переменной МуFilе с конкретным физическим файлом на дисковом носителе информации;

closе (МуFilе) - процедура, закрывающая открытый файл;

rewrite (МуFilе) – процедура, создающая новый файл и открывающая его для записи или чтения; эта процедура имеет дополнительный параметр при работе с нетипизированными файлами, который будет рассмотрен позднее;

reset (МуFilе) – процедура, открывающая существующий файл данных; эта процедура имеет дополнительный параметр при работе с нетипизированными файлами, который будет рассмотрен позднее;

eof (МуFilе) – логическая функция, проверяющая, достигнут ли конец файла;

seek (МуFilе, n) - процедура, позволяющая явно изменить значение текущего указателя файла, установив его на элемент с номером n;

filesize(МуFilе) - функция, возвращающая позицию указателя по файлу; нумерация начинается с нуля;

filepos (МуFilе) - функция, возвращающая количество элементов файла;

rename(МуFilе, FileName) - процедура, позволяющая переименовать существующий файл;

truncate(МуFilе) - процедура, позволяющая удалить часть существующего файла, начиная с текущей позиции;

erase(МуFilе) - процедура, стирающая указанный файл