- •Приклад програми роботи з файлами різних типів
- •Im:string[10];
- •Var baza:file of zap;
- •I,j,k:integer;
- •Var kopiia:file of zap;
- •Val(copy(str,1,p1-1),poch,p1);
- •Im:string[10];
- •Var baza:file of zap;
- •I,j:integer;
- •Var baza,kopiia:file;
- •Im:string[10];
- •Inc(poch);
- •If (ind_rob) and (vidp in ['1','n','2','d','3','r','4','V'])
- •Текст програми для визначення коду клавіші клавіатури
- •0 І ще якесь число - наприклад, клавіші PgDn, Del, End тощо.}
- •Var vidp:char;
Im:string[10];
pb:string[14];
bal:array[1..n] of integer;
end;
Var baza:file of zap;
zapys:zap;
I,j:integer;
sym:char;
begin
assign(baza,imfil);
writeln('Vyvedennia informatsii z bazy danykh ',imfil);
reset(baza);
i:=0;sym:=#13;
while (not eof(baza)) and (sym<>#27) do {eof - індикатор кінця файла}
begin
inc(i);
read(baza,zapys);
with zapys do begin write(i:3,pr:14,im:11,pb:16);
for j:=1 to n do write(bal[j]:2);end;
writeln;
delay(65000);delay(65000);
end;
close(baza);
readln;
end; {vyvid}
{**************************************************************}
{* kopiiuvannia - копіювання файла-бази даних в інший файл *}
{* (використання блочних файлів) *}
{**************************************************************}
procedure kopiiuvannia(imfil,imfil_c:string);
Var baza,kopiia:file;
str:string[48]; {блок обміну даними між файлами 48+1=12+1+10+1+14+1+5*2}
p:integer;
begin
assign(baza,imfil);
assign(kopiia,imfil_c);
writeln('Kopiiuvannia informatsii z bazy danykh ',imfil,' v ',imfil_c);
reset(baza,49);
rewrite(kopiia,49);
while not eof(baza) do
begin
blockread(baza,str,1,p);
blockwrite(kopiia,str,1);
end;
close(baza);
close(kopiia);
end; {kopiiuvannia }
{******************************************************************}
{* redahuvannia - виведення на екран і редагування з подальшим *}
{* записом у файл вказаного діапазону записів, *}
{* (використання типізованого файла) *}
{******************************************************************}
procedure redahuvannia(imfil_c:string);
const n=5;
type zap = record
pr:string[12];
Im:string[10];
pb:string[14];
bal:array[1..n] of integer;
end;
Var kopiia:file of zap;
zapys:zap;
str:string[20];
fs,p1,p2,i,j,k:integer;
poch,kin:integer; {діапазон записів}
sym:char;
begin
assign(kopiia,imfil_c);
writeln('Redahuvannia informatsii v bazi danykh ',imfil_c);
reset(kopiia); {відкриття існуючого файлу як для читання, так і для запису}
fs:=filesize(kopiia);
{визначення діапазону записів}
with zapys do
begin
repeat
write('Vkazhit diapazon zapysiv (napryklad, ''3..15'') v mezhakh vid 1 do ',fs,': ');
readln(str);
p1:=pos(' ',str);
while p1>0 do begin delete(str,p1,1);p1:=pos(' ',str);end;
p1:=pos('..',str);
Val(copy(str,1,p1-1),poch,p1);
if (poch<1) or (poch>fs)
then
begin
writeln('nepravylno vkazano pochatok diapazonu');
p1:=1
end
else p1:=0;
val(copy(str,pos('..',str)+2,length(str)),kin,p2);
if (kin<poch) or (kin>fs)
then
begin
writeln('nepravylno vkazano kinets diapazonu');
p2:=1
end
else p2:=0;
until (p1=0) and (p2=0);
{виведення і редагування записів}
writeln('Yakshcho ne treba redahuvaty vyvedenyi zapys, to natyskaite ESC,');
writeln(' yakshcho treba - byd-yaku klavishu');
while poch<=kin do
begin {виведення}
writeln(' Zapys N ',poch);
seek(kopiia,poch-1); {встановлення вказівника на певний запис файлу}
read(kopiia,zapys); {зчитування вказаного запису}
write(pr,' ',im,' ',pb);
for i:=1 to n do write(bal[i],' ');
writeln;
sym:=readkey;write(sym);
if sym<>#27 then {редагування}
begin
write('Pr: ');
sym:=readkey;write(sym);
if sym<>#27 then begin readln(pr);pr:=sym+pr;end;
write('Im: ');
sym:=readkey;write(sym);
if sym<>#27 then begin readln(im);im:=sym+im;end;
write('Pb: ');
sym:=readkey;write(sym);
if sym<>#27 then begin readln(pb);pb:=sym+pb;end;
write(n,' otsinok: ');
j:=1;
while j<=n do
begin
sym:=readkey;write(sym);
if sym=#27 then inc(j)
else if (sym>='2') and (sym<='5') then
begin val(sym,bal[j],k);inc(j);end;
end;
writeln;
seek(kopiia,poch-1);
write(kopiia,zapys);
end; {редагування}
