uses crt;
type doc=record
nom:integer;
text:string;
end;
var z:doc;
w:char;
f:file;
i,n,k,ns:integer;
st:string;
begin
clrscr;
write('Количество строк n=');
readln(n);
assign(f,'doc.dat');
rewrite(f,1);
writeln('Введите данные о документе');
for i:=1 to n do
begin
z.nom:=i;
writeln('Строка ',i,':');
readln(z.text);
blockwrite(f,z.nom,sizeof(z.nom));
blockwrite(f,z.text,sizeof(z.text));
end;
close(f);
clrscr;
repeat
clrscr;
writeln('Выберите действие:');
writeln('1-вывод данных');
writeln('2-поиск по номеру строки');
writeln('3-поиск по содержанию строки');
writeln('другое-выход');
readln(w);
case w of
'1':begin
reset(f,1);
writeln('Содержание файла:');
for i:=0 to n-1 do
begin
blockread(f,z.nom,sizeof(z.nom));
blockread(f,z.text,sizeof(z.text));
writeln(z.nom:2,' ',z.text);
end;
close(f);
write('Press Enter...');
readln
end;
'2':begin
reset(f,1);
write('Введите номер строки ns=');
readln(ns);
if(ns<1)or(ns>filesize(f)) then
begin
writeln('Такой страницы нет!');
write('Press Enter...');
readln;
close(f);
end
else
begin
blockread(f,z.nom,sizeof(z.nom));
blockread(f,z.text,sizeof(z.text));
writeln(z.nom:2,' ',z.text);
write('Press Enter...');
readln;
close(f);
end;
end;
'3':begin
reset(f,1);
writeln('Введите содержание строки для поиска:');
readln(st);
k:=0;
while not eof(f) do
begin
blockread(f,z.nom,sizeof(z.nom));
blockread(f,z.text,sizeof(z.text));
if z.text=st then
begin
writeln(z.nom:2,' ',z.text);
k:=1;
end;
end;
if k=0 then writeln('Такой строки нет!');
write('Press Enter...');
readln;
close(f);
end;
else exit;
end;
until not(w in ['1'..'3']);
end.