Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.docx
Скачиваний:
192
Добавлен:
28.03.2015
Размер:
383.85 Кб
Скачать

25. Корректировка и дозапись компонент в типизированных файлах.

Reset(f) - файл будет открыт на чтение и запись как при последовательном, так и при прямом доступе.

Rewrite(f) – файл будет открыт на запись и чтение.

Read, write – запись и чтение информации из файла.

type veshi=record

surname:string[20];

n:integer;

p:real;

end;

file_rec=file of veshi;

Добавление элементов в типизированный файл (в конец файла):

Procedure Add (var f:file_rec);

var v:veshi;

k, i:integer;

begin

clrscr;

writeln ('Enter number of people wich you want add : '); {число добавляемых записей}

readln (k);

seek (f, FileSize(f));

for i:=1 to k do

begin

write ('Enter surname: '); readln (v.surname);

write ('Enter number of things: '); readln (v.n);

write ('Enter weight of things: '); readln (v.p);

write (f,v);

end;

writeln; writeln ('Press "Enter"');

readln

end;

Процедура редактирования i-ой записи

Procedure Edit (var f:file_rec);

var i,z:integer;

v:veshi;

begin

clrscr;

z:=filesize(f);

if z=0 then {proveraiem pyst li fail}

begin

writeln; writeln ('File is empty');

writeln; writeln ('Press "Enter"');

readln;

end

else

begin

writeln ('Enter position of element (fist element have 0 position)');

readln (i);

if z<=i then {proveraiem syshestvyet li zapis' s poziciei i}

begin

writeln; writeln ('File have not element with this position');

writeln; writeln ('Press "Enter"');

readln;

end

else

begin

write ('Enter Surname: '); readln (v.surname);

write ('Enter number of things: '); readln (v.n);

write ('Enter weight of things: '); readln (v.p);

seek (f, i);

write (f, v);

writeln; writeln ('Press "Enter"');

readln;

end;

end;

end;

Процедура удаления i-ой записи:

Procedure Delete (var f:file_rec);

var i, k,z:integer;

v:veshi;

f2:file_rec;

begin

clrscr;

z:=filesize(f);

if z=0 then {proveraiem pyst li fail}

begin

writeln ('File is empty');

writeln; writeln ('Press "Enter"');

readln;

end

else

begin

writeln ('Enter position of element to delete (fist element have 0 position)');

readln (k);

if z<=k then {proveraiem syshestvyet li zapis' s poziciei i}

begin

writeln; writeln ('File have not element with this position');

writeln; writeln ('Press "Enter"');

readln;

end

else

begin

seek(f,0);

assign (f2, 'temp'); rewrite (f2); {sozdaem 2 fail}

k:=k-1;

for i:=0 to k do {kopiryem zapisi iz pervogo faila vo vtoroi do zapisi s poziciei i}

begin

read (f, v);

write (f2,v);

end;

k:=k+2;

if k<z then {proverayiem est' li zapisi posle ydalayemoi}

begin

seek (f,k);

z:=z-1;

for i:=k to z do {kopiryem zapisi iz pervogo faila vo vtoroi posle zapisi s poziciei i}

begin

read (f,v);

write (f2,v);

end;

end;

close(f); close(f2);

erase (f); {ydalaiem 1-i fail}

rename (f2, 'veshi'); {pereimenovivaem 2-oi fail}

assign (f, 'veshi'); reset (f); {otkrivaem polychivshisya fail}

end;

end;

end;