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;