Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР-2010-16-робота з файлами.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
76 Кб
Скачать
☆

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; {редагування}