Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 20.doc
Скачиваний:
2
Добавлен:
11.07.2019
Размер:
49.15 Кб
Скачать

3. Открытие файлов.

В отличие от других типов Паскаля, для работы с файловой переменной (доступа к файлу) необходимо выполнить открытие файла - некоторые подготовительные действия, обусловленные спецификой файлового типа данных. Подготовительные действия по открытию файла включают:

- связывание файловой переменной с именем конкретного файла на внешнем устройстве;

- инициализация (начальная установка) файла в соответствии с характером последующих операций с файлом;

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

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

assign(<имя файловой переменной>,<имя файла или логического устройства>);

Если второй параметр этой процедуры - пустая строка, то имеется в виду стандартный файл input или output. Во всех других случаях второй параметр - имя файла, соответствующее имени в MS DOS (имя файла содержит явно или неявно путь к файлу), либо имя логического устройства.

Имена логических устройств - это специальные имена, принятые в Турбо Паскале для доступа к стандартным внешним устройствам: con - консоль (клавиатура или экран монитора), prn - принтер (если принтеров несколько, то они именуются LPT1, LPT2 и т.д.), aux - коммуникационный канал, nul - "пустое" устройство.

Инициализация файла указывает направление передачи данных между оперативной памятью и файлом. В Паскале предусмотрены 3 стандартные процедуры инициализации файла: для чтения, для записи (создания файла), для добавления записей в существующий файл. Записи файла нумеруются, начиная с 0.

Инициализация файла для чтения - установка файла для чтения 0-записи:

reset (<файловая переменная >);

Для текстовых файлов, открытых процедурой reset, недопустимо использовать процедуры вывода в файл (write, writeln), а для типизированных файлов - допустимо использовать как процедуры read (для чтения записи файла) и write (для обновления записей).

Инициализация файла для создания файла:

rewrite(<файловая переменная>);

Эта процедура создает новый пустой файл с именем, указанным ранее в процедуре связывания assign (если имя файла совпадает с ранее существующим файлом, то он стирается). Новый файл подготовлен к добавлению в него информации процедурой write (для типизированных файлов) или write, writeln (для текстовых файлов).

Инициализация файла для добавления записей в конец имеющегося файла:

append(<файловая переменная >);

Эта процедура устанавливает файл на конец последней записи и открывает доступ процедурам write, writeln для расширения файла новыми строками. Она применима только к текстовым файлам (для типизированных файлов её функции можно выполнять при открытии файла процедурой reset). Заметим, что для текстовых файлов в Паскале не предусмотрено средств обновления существующих строк-записей.

4. Стандартные процедуры и функции работы с файлами.

В Турбо Паскале предусмотрено около двух десятков стандартных процедур и функций для работы с файлами. Остановимся лишь на важнейших из них.

Процедура close (<файловая переменная>);

Эта процедура закрывает файл, сохраняя связь, установленную соответствующей процедурой assign. Особенно важна процедура close для режима добавления записей в файл: при её отсутствии возможны ситуации, когда информация, записываемая в файл, "застрянет" в буфере, в котором накапливаются записи. При нормальном завершении программы функции процедуры close выполняются автоматически (даже при её отсутствии в программе) для всех открытых для чтения файлов.

Процедура erase (<файловая переменная>);

Эта процедура уничтожает файл, ей должна предшествовать процедура close.

Процедура read([<файловая переменная>],<список переменных>);

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

Процедура write([<файловая переменная>],<список выражений>);

Выполняет добавление очередной записи в файл типа text или типизированный файл. Для файла output файловая переменная может быть опущена; выражения списка должны быть типа, соответствующего типу записи файла.

Функция eof(<файловая переменная>);

Логическая функция, определяющая конец файла. Её значение true, если достигнут конец файла и false в противном случае.

Функция IOResult.

Вырабатывает признак последней операции ввода-вывода. Если операция завершилась успешно, IOResult=0, если неуспешно - IOResult <>0. Эта функция доступна только при отключенном автоконтроле ошибок ввода-вывода (директивой компилятора {$I-}). Функция IOResult часто используется для контроля существования файла при его открытии (это будет проиллюстрировано в последующих примерах программ).

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