- •Описание записи (record).
- •Работа с файлами. Общие сведения о файлах.
- •Процедуры и функции для работы с файлами.
- •Особенности обработки типизированных файлов.
- •Создание файла.
- •3. Добавление записей к файлу (в конец файла)
- •If { корректировка подтверждена }
- •If {…запись не удаляется…}
- •Корректировка с использованием последовательного доступа.
- •If {запись не корректируется}
- •О взаимосвязи записей основного обрабатываемого файла и записей файлов-справочников
- •Файлы без типа.
Создание файла.
Запросить у пользователя имя файла на носителе.
Проверить существование файла с заданным именем. Если файл не существует, то создать его. Если файл существует, то предоставить пользователю решить, перезаписать ли его, т.е. стереть его содержимое и заполнить прежний файл заново или же создать новый файл, но уже с другим именем
Замечание: эти два действия можно выполнять отдельным «пунктом меню», если технологически это удобнее.
Открыть файл для записи.
Организовать цикл для заполнения файла, который продолжать до отказа пользователя от ввода очередной записи. Внутри цикла выполнить следующие действия:
запросить у пользователя значения полей очередной записи и занести её в файл;
запросить у пользователя, будет ли ещё запись. Если нет, то выход из цикла, иначе - продолжение процесса заполнения файла записями, т.е. очередное повторение тела цикла.
После выхода из цикла - закрытие созданного файла.
Примечание. Нежелательно использовать заранее определённое количество записей для записи их в файл.
Пример
Пусть требуется создать файл из записей, данные для которых вводятся с клавиатуры.
Структура записи файла следующая:
фамилия;
табельный номер;
заработная плата.
Program file_1;
type
tz=record
fio:string[20];
tn:integer;
zp:real
end;
var
zap:tz;
fout:file of tz;
fl:boolean;
filename:string;
ans : string;
begin
{ операторы проверки существования
выходного файла }
repeat
writeln('введите имя файла на диске');
readln(filename);
assign (fout,filename);
{$i-}
reset (fout);
{$i+}
if ioresult=0
then begin
{уничтожение сущ-го файла
не допускается}
writeln('файл ', filename,' уже есть');
close(fout);
fl:=false
end
else begin
{ открытие нового файла для записи }
rewrite(fout);
fl:=true
end
until fl;
{ собственно создание файла }
repeat
writeln('ввЕдИТЕ фамилиЮ ');
readln(zap.fio );
writeln(' ввЕдИТЕ таб. номер ');
readln(zap.tn);
writeln(' ввЕдИТЕ зарплатУ ');
readln(zap.zp);
write (fout, zap);
writeln('будет ещё запись ? ( y/ n )');
readln(ans);
until ( ans = ‘n’ );
close(fout);
end.
Задача 2. Содержимое файла вывести на экран (фрагмент программы).
. . .
{ «распечатка» файла }
reset(fout);
repeat
read(fout,zap);
writeln( zap.fio:25,
zap.tn:9,
zap.zp:8:2);
until eof(fout);
close(fout);
. . .
В процедуре вывода файла на экран («распечатке») тоже можно контролировать, существует ли открываемый файл.
