Иллюстрированный самоучитель по Turbo Pascal

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

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

Процедура Close

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

CLOSE (<ф.п.>)

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

Процедура RENAME

Переименовывает файл. Формат обращения:

RENAME (<ф.п.>, <новое имя>)

Здесь <новое имя> – строковое выражение, содержащее новое имя файла. Перед выполнением процедуры необходимо закрыть файл, если он ранее был открыт процедурами RESET, REWRITE или APPEND.

Процедура ERASE

Уничтожает-файл. Формат обращения:

ERASE (<ф.п.>)

Перед выполнением процедуры необходимо закрыть файл, если он ранее был открыт процедурами RESET, REWRITE или APPEND.

Следующий фрагмент программы показывает, как можно использовать процедуры RENAME и CLOSE при работе с файлами. Предположим, что требуется отредактировать файл, имя которого содержит переменная NAME. Перед редактированием необходимо убедиться, что нужный файл имеется на диске, и переименовать его – заменить расширение этого файла на ВАК (страховочная копия). Если файл с таким расширением уже существует, его надо стереть.

var
fi: text; {Исходный файл}
fo: text; {Отредактированный файл}
name: String;
name_bak: String;
k, i: Word;
const
bak = '.bak';
begin
…….
{Получаем в name bak имя файла с расширением.ВАК:}
k: = pos('.',name);
if k = 0 then
k: = length(name) +1;
name_bak: = copy(name,1,k-1) + bak;
{Проверяем существование исходного файла:}
assign(fi,name);
{$I-} ' reset(fi);
if lOResult <> 0 then
HALT; {Завершаем программу: файла не существует}
close(fi);,
{Проверяем существование.ВАК-файла:}
assign(fо,name_bak);
reset (fo);
{$I+}
if lOResult = 0 then
begin {Файл.ВАК существует:}
close(fo); {Закрываем его}
erase(fo) {и уничтожаем}
end;
{Проверки закончены, подготовка к работе:}
rename(f i,name_bak);
reset(fi);
assign(fo,name);
rewrite(fo);
…….
end.

Обратите внимание: проверка на существование файла .ВАК в данном примере необходима, так как обращение:

rename(fi,name_bak);

Вызовет ошибку в случае, если такой файл существует.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.