Чтобы создавать и обрабатывать файлы в программе, необходимо:
1.описать переменную, соответствующую файлу;
2.задать соответствие между файлом и переменной.
Описание файловой переменной зависит от типа файла:
-текстовые:
Var <файловая переменная>:text;
-типизированные:
Var
<файл. пер-я>:file of <тип элементов файла>
-нетипизированные
Var <файловая переменная>:file;
Для установления соответствия между переменной и реально существующим файлом на диске в языке используется процедура
assign (<файловая переменная >,<имя файла>);
Зам! Имя файла может быть строковой постоянной, тогда оно записывается в апострофах, или строковой переменной, тогда достаточно указать имя этой переменной. Если файл располагается не в текущей директории, то необходимо
указать полный путь до него.
Процедура Assign всегда предшествует другим процедурам работы с файлами, так как ставит в соответствие конкретному файлу на внешнем устройстве логическую файловую переменную языка, к которой впоследствии будут обращаться другие файловые процедуры. Недопустимо использование процедуры Assign уже открытого файла.
Для работы с файлом, прежде всего, необходимо его открыть. В языке Паскаль предусмотрены для этого две процедуры:
Reset (<файловая переменная >); — открывает существующий файл;
Rewrite (<файловая переменная >); — создает и открывает новый файл.
Открытие внешнего файла с помощью процедуры Reset в случае отсутствия на диске может привести к ошибке при выполнении программы.
При попытке создать и открыть новый файл с именем уже существующего на диске набора данных, действие процедуры сведется к удалению существующего набора, создания и открытия нового.
Операция закрытия файла является логическим окончанием работы с любым открытым файлом. Для этого служит процедура Close (var F);
Использование процедуры Close позволяет устранить связь файловой переменной с внешним файлом, установленную с помощью процедуры Assign.
Пример: Полная цепочка команд для создания простого текстового файла с именем WORK.TXT:
Program _;
Var F: text;
begin
Assign(F, 'WORK.TXT');
Rewrite(F);
Write(F,'Простой текстовый файл'); Close(F);
end.
К языковым средствам обслуживания файлов необходимо отнести процедуры переименования и удаления неоткрытых файлов. Использование этих процедур не зависит от типа файла.
Rename(<файловая переменная>,<нов.имя>);-процедура переименовывает неоткрытый файл любого типа
Erase(<файловая переменная >);- процедура удаляет неоткрытый внешний файл любого типа
Обе процедуры нельзя использовать для уже открытых файлов. В противном случае могут возникнуть нежелательные последствия со стороны операционной системы.
Единственным стандартным шагом перед использованием процедур является установка связи между внешним файлом с конкретным именем и файловой переменной. Операции удаления и переименования осуществляются только для реально существующих файлов, иначе возникает ошибка выполнения программы.
Пример: Удаление или переименование файла.
Program _;
Var F: file ;
Ch: char;
St: string;
begin
Write('Введите имя файла: ');
Readln(St);
Assign(F, St);
Write('Удалить файл(У), Переименовать(П),');
Readln(Ch);
case Ch of
'у': Erase(F);
'п': begin
Write(‘Введите новое имя файла: ');
Readln(St);
Rename(F, St);
end;
end.
Для чтения и записи данных используют следующие процедуры:
READ(<файл.пер >,<переменная>)-процедура чтения из файла в переменную.
WRITE (<файл.пер >,<переменная>)- процедура записи из переменной в файл.
Часто при работе с файлами используется функция:
EOF (<файловая переменная> ) - возвращает булевское значение True, если указатель чтения- записи в конце файла, и False — в противном случае.
Для того чтобы файловые операции выполнялись четко и без ошибок, необходимо использовать специальную функцию IOresult. Функция работает без параметров и возвращает значение типа integer, представляющее статус последней выполненной операции ввода-вывода: после корректного выполнения операции ввода-вывода функция IOresult возвращает значение, равное нулю, в остальных случаях функция возвращает соответствующий код ошибки.
Использование этой функции в программах возможно лишь в том случае, если на время выполнения файловых операций отключена стандартная проверка операций ввода-вывода. Для этих целей используется директива компилятору {$I}, которая может задаваться внутри текста программы.
Пример: Вариант программы для проверки существования файла на диске
Program _;
Var F: file ;
St: string;
begin
Write('Введите имя файла : ');
Readln(St);
Assign(F, St);
{$I—} {Отключить стандартную обработку ошибок}
Reset(F); {Открыть файл}
{$I+} {Включить стандартную обработку ошибок}
if IOresult = 0 then
begin
Writeln('Файл существует и нормально открыт’);
Close(F);{Закрыть файл}
end;
else
Writeln('Файла с именем’,St,' на диске нет');
end.
Дома: Разобрать и выучить все функции обработки файлов.