Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota4-информатика.doc
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
153 Кб
Скачать
☆

Общие процедуры и функции

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

  • Процедура assign(ФайловаяПеременная, ИмяФайла). Предшествует другим процедурам, т. к. ставит в соответствие физическому файлу на внешнем устройстве логический файл — файловую переменную (связывает их). ИмяФайла должно представлять собой выражение строкового типа. Дальнейшие операции с переменной ФайловаяПеременная будут выполняться над физическим файлом ИмяФайла. Процедуру assign недопустимо использовать для уже открытого файла. Прежде чем использовать файловую переменную повторно, необходимо закрыть файл с помощью процедуры close. После вызова assign связь файловой переменной с физическим файлом существует до тех пор, пока не будет выполнен другой assign для данной файловой переменной. Следовательно, файл можно повторно открыть без дополнительного использования процедуры assign даже после закрытия close.

  • Процедура reset(ФайловаяПеременная) открывает существующий файл на чтение (открывает входной файл) и ставит указатель на начало первого элемента файла. При отсутствии внешнего файла с указанным именем возникает сообщение об ошибке File not found (Файл не найден). Если при чтении файла возникнет необходимость вернуть указатель в его начало, достаточно будет просто применить процедуру reset к этому файлу еще раз

  • Функция ioresult — возвращает статус последней выполненной операции ввода-вывода (успешно она прошла или нет). Пример использования данной функции для обработки ошибок ввода-вывода уже рассматривался. При работе с файлами рекомендуется использовать ее при выполнении любого действия, которое может привести к ошибке. Например, при попытке открыть файл может оказаться, что файла с таким именем нет в текущем или заданном каталоге. Стандартный способ обработки такой ошибки — аварийная остановка программы с сообщением File not found (файл не найден). Обработка функции ioresult позволит выполнить проверку существования файла на диске более гибко. В Delphi для этих целей имеется более удобный способ — стандартная функция fileexists.

  • Процедура rewrite(ФайловаяПеременная) — создает и открывает новый (выходной) файл для последующей записи данных. После ее успешного выполнения файл готов к записи в него первого элемента.

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

  • Процедура close(ФайловаяПеременная). Используя процедуру close, программист должен закрыть файл, после того как в программе будет завершена его обработка. В противном случае может произойти потеря данных. При закрытии внешний (физический) файл обновляется и его автоматически завершает символ конца файла. Впоследствии ФайловаяПеременная может быть связана с другим (или вновь с тем же самым) физическим файлом.

  • Процедура rename(ФайловаяПеременная, ИмяФайла) — используется для того, чтобы переименовать неоткрытый внешний файл любого типа. Новое имя задается строкой ИмяФайла.

  • Процедура erase(ФайловаяПеременная) — удаляет неоткрытый внешний файл любого типа, задаваемый параметром ФайловаяПеременная

Обратите внимание — процедуры rename и erase нельзя использовать для открытых файлов. Их необходимо предварительно закрыть. Если файл не существует, возникает ошибка выполнения программы.

  • Логическая функция eof(ФайловаяПеременная) — выполняет проверку, не достигнут ли конец файла (End Of File) при чтении из него данных. Функция возвращает true, если конец файла обнаружен и указатель текущей позиции находится в конце файла за его последним символом. Это значит, что последний элемент в файле уже прочитан или файл после открытия оказался пуст. В противном случае функция возвращает false.

Замечание

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

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

var f: text; str: string;

begin

assign(f,'file01.txt'); rewrite(f);

writeln(f,'Этот простой текстовый файл содержит строку текста');

close(f);

assign(f,'file01.txt'); reset(f);

readln(f, str);

close(f);

writeln('Проверка ввода/вывода в файл:'); writeln(str);

end.