Использование второго файла

Схема с использованием второго файла может применяться в следующих случаях:

1) добавление записи в файл –

· в конец файла или

· на заданное место, если файл рассортирован;

2) удаление заданной записи из файла;

3) корректировка заданной записи (изменение значений полей записи и возврат её на прежнее место).

Далее рассматриваются алгоритмы действий ведения файла. При создании пакета ведения типизированного файла рекомендуется выполнить рассматриваемые действия и желательно в той же последовательности. Для работы с текстовыми файлами все эти алгоритмы также применимы, но с учётом особенностей работы с данным типом записей.

Создание файла.

· Запросить у пользователя имя файла на носителе.

· Проверить существование файла с заданным именем. Если файл не существует, то создать его. Если файл существует, то предоставить пользователю решить, перезаписать ли его, т.е. стереть его содержимое и заполнить прежний файл заново или же создать новый файл, но уже с другим именем

Замечание: эти два действия можно выполнять отдельным «пунктом меню», если технологически это удобнее.

· Открыть файл для записи.

· Организовать цикл для заполнения файла, который продолжать до отказа пользователя от ввода очередной записи. Внутри цикла выполнить следующие действия:

v запросить у пользователя значения полей очередной записи и занести её в файл;

v запросить у пользователя, будет ли ещё запись. Если нет, то выход из цикла, иначе - продолжение процесса заполнения файла записями, т.е. очередное повторение тела цикла.

· После выхода из цикла - закрытие созданного файла.

Примечание. Нежелательно использовать заранее определённое количество записей для записи их в файл.

Пример

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

Структура записи файла следующая:

- фамилия;

- табельный номер;

- заработная плата.

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);

...

В процедуре вывода файла на экран («распечатке») тоже можно контролировать, существует ли открываемый файл.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: