Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
записи_и_файлы_20ноя2012.doc
Скачиваний:
12
Добавлен:
01.03.2025
Размер:
513 Кб
Скачать
☆
  1. Создание файла.

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

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

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

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

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

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

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

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

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

Пример

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

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

  • фамилия;

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

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

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

. . .

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