Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABC_Pascal.doc
Скачиваний:
2149
Добавлен:
30.03.2015
Размер:
1.12 Mб
Скачать

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

Следующие процедуры открывают логический файл с файловой перемен­ной <ф.п.>, связанной ранее с уже существующим файлом:

RESET(<ф.п.>) – для чтения,

REWRITE(<ф.п.>) – для записи.

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

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

Процедура CLOSE(f) закрывает открытый ранее логический файл f и обеспечивает сохранение всех записей и регистрацию файла на диске. Вы­зовы процедуры CLOSE необходимы для завершения работы с файлами. Также необходимо закрывать открытые файлы перед их удалением (ERASE) или пе­реименованием (RENAME). При этом связь файла с файловыми переменными сох­раняется. Попытка закрыть уже закрытый файл или еще не открытый вызовет сбой в работе программы. Закрытие файлов выполняется автоматически по отношению ко всем открытым файлам при нормальном за­вершении программы.

В таблице 8 сведены общие процедуры и функции для работы с файлами, наиболее применимые на практике.

Таблица 8

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

Процедуры и функции

Выполняемые действия

Assign (f, name )

ReSet (f )

ReWrite (f )

Close (f )

Erase (f )

ReName (f, NewName )

EOF (f )

Связывает <ф.п.> f с именем файла name типа string

Открывает файл с логическим именем f для чтения

Открывает файл с логическим именем f для записи

Закрывает файл с логическим именем f

Удаляет (стирает) физический файл, связанный с f, с диска. Стираемый файл должен быть закрыт

Переименовывает физический файл, связанный с

<ф.п.> f, в файл с новым именем NewName

Функция логического типа возвращает значение

TRUE, если достигнут признак конца файла или

файл пуст, иначе возвращает FALSE

При переименовании процедурой RENAME менять можно лишь имя файла, имя диска менять нельзя. Предварительно файл должен быть закрыт проце­дурой CLOSE.

Функция EOF(f) тестирует конец файла. Если она возвращает TRUE, при записи очередной компонент будет добавлен в конец файла, при чте­нии  файл считается исчерпанным.

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

Типизированные файлы позволяют организовать прямой доступ к каж­дой из компонент (по ее порядковому номеру), поскольку длина любого компонента типизированного файла строго постоянна. Описание файловой переменной для таких файлов выполняется в следующем виде:

Var < ф.п.> : file of <тип компонент>;

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

Для работы с типизированными файлами определены следующие проце­дуры и функции (табл. 9). Процедуру SEEK и функции FILESIZE, FILEPOS нельзя использовать для текстовых файлов.

Таблица 9

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

Процедуры, функции

Выполняемые действия

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

WRITE(<ф.п.>,

<список вывода>);

SEEK(<ф.п.>, <номер_компоненты>)

FILESIZE(<ф.п.>);

FILEPOS(<ф.п.>);

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

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

Процедура смещает указатель файла к компо­ненту с указанным номером; <номер_компоненты> – выражение типа Integer

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

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

Чтобы переместить указатель в конец файла, можно написать, напри­мер: Seek(f, FileSize(f)); где f  файловая переменная.

Файловая переменная предварительно должна быть объявлена предло­жением FILE OF и связана с именем физического файла процедурой ASSIGN. Файл перед обращением к нему должен быть открыт.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]