Вот что у меня получилось
Код
uses crt,graph;
type zap=record
voz,dost:integer;
fio,cou,vid:string{[30]};
med:char;
end;
label menu;
var ch:char;
yk:byte;
f:file of zap;
v:zap;
i,driver,mode:integer;
dl_f:longint;
pr_kor:boolean;
procedure kursor(yk:byte);
procedure stir(ys:byte);
begin
textcolor(0);gotoxy(11,ys);write(' ');
end;
begin
textcolor(2);gotoxy(11,yk);write('-->');
if ord(ch)=80 then
if yk=8 then stir(15)
else stir(yk-1);
if ord(ch)=72 then
if yk=15 then stir(8)
else stir(yk+1);
end;
procedure dopolnenie;
var n:char;
label korrect;
procedure provmed(var med:char);
begin
repeat
write('Введите награду (З,С,Б,-): ');
readln(med);
until (med='-')or(med='з')or(med='З')or(med='с')or(med='С')or(med='Б')or(med='б');
end;
procedure prov4isl(var voz,dost:integer);
procedure prov(w:string;var z:integer);
var s:string;
rez:integer;
begin
repeat
write(w);
readln(s);
val(s,z,rez);
until (rez=0);
end;
begin
repeat
prov('Введите возраст: ',voz);
until (voz<100)and(voz>10);
repeat
prov('Введите достигнутое место: ',dost);
until (dost>=1)and(dost<1000);
{ repeat
prov('Vvedite den postanovki na y4et: ',d);
until (d<=31)and(d>0);
repeat
prov('Vvedite god rozdenia: ',groz);
until (groz<2100)and(groz>1800);
repeat
prov('Vvedite staz raboti: ',staz);
until (staz>=0)and(staz<=100); }
end;
begin
textmode(co80);
if pr_kor=true then goto korrect;
assign(f,'baza.txt');
{$I-}
reset(f);
if ioresult<>0 then rewrite(f);
{$I+}
dl_f:=filesize(f);seek(f,dl_f);
korrect:textcolor(15);
gotoxy(1,1);
repeat
with v do
begin
clrscr;
write('Введите фамилию и имя: '); readln(fio);
prov4isl(voz,dost);
write('Введите страну : ');readln(cou);
write('Введите вид спорта: ');readln(vid);
provmed(med);
end;
if pr_kor then break;
write(f,v);
write('Вести еще ? (y/n): ');readln(n);
until (n='n') or (n='N');
textcolor(0);
if pr_kor=false then close(f);
end;
procedure korrektirovka;
label kor;
var poz,str:integer;
procedure tablica;
var q:integer;
begin
textcolor(3);
gotoxy(2,1);write('N');
gotoxy(6,1);write('Страна');
gotoxy(20,1);write('Фамилия');
gotoxy(40,1);write('Возраст');
gotoxy(49,1);write('Вид спорта');
gotoxy(61,1);write('Достижение');
gotoxy(73,1);write('Медаль');
{gotoxy(74,1);write('POL');}
gotoxy(1,22);
textcolor(11);
for q:=1 to 80 do write('-');
gotoxy(12,23);write('Выберите запись которую вы хотите изменить и нажмите Enter');
gotoxy(17,24);write('Для передвижения по записям используйте - '+#24#25+'');
gotoxy(22,25);write('Для выхода в меню нажмите Esc');
textcolor(15);
end;
procedure zamena;
begin
pr_kor:=true;
dopolnenie;
pr_kor:=false;
seek(f,(str-1)*20+yk-3);write(f,v);
end;
begin
textmode(co80);clrscr;
assign(f,'baza.txt');
{$i-}
reset(f);
if ioresult<>0 then
begin
write('File not found');
readln;halt;
end;
{$i+}
i:=1;poz:=2;str:=1;yk:=3;
ch:=#80;
kor:if ch=#80 then
begin
textcolor(2);gotoxy(1,3);write('>');textcolor(15);
end;
if ch=#72 then
begin
textcolor(2);gotoxy(1,22);write('>');
end;
seek(f,i-1);
ch:=#0;
while not eof(f) do
begin
read(f,v);
tablica;
inc(poz);
if (i>=str*20-20)and(i<=str*20) then
begin
textcolor(15);
gotoxy(2,poz);write(i,'.');
gotoxy(6,poz);write(v.cou);
gotoxy(20,poz);write(v.fio);
gotoxy(40,poz);write(v.voz);
gotoxy(49,poz);write(v.vid);
gotoxy(61,poz);write(v.dost);
gotoxy(73,poz);write(v.med);
{gotoxy(74,poz);write(v.pol);}
inc(i);
end;
end;
repeat
if keypressed then
begin
ch:=readkey;
if ch=#13 then
begin
zamena;clrscr;
poz:=2;i:=str*20-19;
textcolor(2);
gotoxy(1,yk);write('>');
goto kor;
end;
if ch=#0 then
begin
ch:=readkey;
case ord(ch) of
80: if yk=22 then
begin
clrscr;
textcolor(0);gotoxy(1,yk);write(' ');
poz:=2; yk:=3; str:=str+1;goto kor;
end
else
if (str-1)*20+yk-2<>filesize(f) then
begin
textcolor(0);gotoxy(1,yk);write(' ');
inc(yk);
end;
72: if ((str-1)*20+yk-2<>1) then
if yk<>3 then
begin
textcolor(0);gotoxy(1,yk);write(' ');
yk:=yk-1;
end
else
begin
clrscr;
textcolor(0);gotoxy(1,yk);write(' ');
poz:=2; yk:=22; str:=str-1;i:=(str-1)*20+1;goto kor;
end;
end; {end of case}
end; {end of ch=0}
textcolor(2);gotoxy(1,yk);write('>');
end;{end of keypressed}
until ch=#27;
close(f);
end;
procedure grafik2;
begin
{driver:=detect;initgraph(driver,mode,'');
cleardevice;setcolor(4);
outtextxy(100,100,'fuck off');
rectangle(200,100,400,250);
readln;
closegraph;}
end;
begin
menu:clrscr;
textmode(co40);
textcolor(14);gotoxy(19,5);write('Меню');
textcolor(15);gotoxy(14,8);write('Просмотр и корректировка');
gotoxy(14,9);write('Создание и дополнение');
gotoxy(14,10);write('Запрос-1');
gotoxy(14,11);write('Запрос-2');
gotoxy(14,12);write('Запрос-3');
gotoxy(14,13);write('Диаграмма-1');
gotoxy(14,14);write('Диаграмма-2');
gotoxy(14,15);write('График-1');
textcolor(11);
gotoxy(1,20);
for i:=1 to 40 do write('-');
gotoxy(7,21);write('Для передвижения используйте - '+#24#25+'');
gotoxy(8,22);write('Для выбора нажмите Enter');
gotoxy(9,23);write('Для выхода нажмите Esc');
yk:=8;kursor(yk);
ch:=#0;
repeat
if keypressed then
begin
ch:=readkey;
if ch=#13 then
case yk of
8:begin korrektirovka;goto menu;end;
9:begin dopolnenie;goto menu;end;
10:;
11:;
12:;
13:;
14:begin grafik2;goto menu;end;
15:;
end;
if ch=#0 then
begin
ch:=readkey;
case ord(ch) of
80: if yk=15 then yk:=8
else inc(yk);
72: if yk=8 then yk:=15
else yk:=yk-1;
end;
kursor(yk);
end;
end;
until ch=#27;
textmode(co80);
end.