Здравствуйте!У меня проблема при переделке динамической базы данных в объектную.Компилятор ругается на неопределенное опережающее описание(ошибка 59).В интернете я нашел по поводу этой ошибки лишь то, что она чаще всего связана с модулями и с отсутствием определения.Не могли бы вы подсказать,как решить эту проблему?
При просмотре листинга в самом редакторе pascal кракозябры пропадут -
Код:
uses graph,crt;
{********************š¯ë****************************}
type
dat = record
fam,nam,ot:string[10];
end;
Tchel = OBJECT
prep,stud:dat;
d,m,g:integer;
END;
stroka = ^Tinfa;
Tinfa = OBJECT(Tchel)
nom,adr,tema:string[15];
next:stroka;
procedure init;
END;
{*********************®áâ âë***********************}
const menu:array[1..6] of string=('¢®€ € ëå','®à४âšà®¢ª € ëå',
'¥ç âì € ëå','¡à ¡®âª € ëå','¥ç âì १ã«ìâ ⮢','®¥æ à ¡®âë');
{********************¥à¥¬¥ë¥***********************}
var
gd:integer;
gm:integer;
i:integer;
y:integer;
n:integer;
ch:char;
{********************à®æ¥€ãàë***********************}
Procedure Add_stroka (Var first : stroka; f :Tinfa);
Var
p,q : stroka;
Begin
new (p);
p^:=f;
p^.next:=nil;
if first=nil then
first:=p
else
begin
q:=first;
While q^.next<>nil do
q:=q^.next;
q^.next:=p;
end;
End;
procedure init;
var s:string;
b:Tinfa;
f:text;
d:integer;
a:stroka;
begin
closegraph;
assign(f,'mih.txt');
writeln('ë¡¥àšâ¥:');
writeln('¢¢®€ € ëå á ª« ¢šâãàë / ç⥚¥ € ëå š§ ä ©« -> 1/2');
readln(d);
if d=1 then
begin
rewrite(f);
writeln('¢¥€šâ¥ € ë¥:');
repeat
n:=n+1;
writeln('¢¥€šâ¥ ',n,' £® áâ〥â ');
writeln(' ¬š«šï');
readln(b.stud.fam);
writeln(f,b.stud.fam);
writeln('•');
readln(b.stud.nam);
writeln(f,b.stud.nam);
writeln('âç¥á⢮');
readln(b.stud.ot);
writeln(f,b.stud.ot);
writeln('¢¥€šâ¥ € âã ஊ€¥šï ',n,' £® áâ〥â ');
writeln('¢¥€šâ¥ €¥ì');
readln(b.d);
writeln(f,b.d);
writeln('¢¥€šâ¥ ¬¥áïæ');
readln(b.m);
writeln(f,b.m);
writeln('¢¥€šâ¥ £®€');
readln(b.g);
writeln(f,b.g);
writeln('¢¥€šâ¥ ®¬¥à £à㯯ë ',n,' £® áâ〥â ');
readln(b.nom);
writeln(f,b.nom);
writeln('¢¥€šâ¥ €à¥á ',n,' £® áâ〥â ');
readln(b.adr);
writeln(f,b.adr);
writeln('¢¥€šâ¥ ã箣® à㪮¢®€šâ¥«ï ',n,' £® áâ〥â ');
writeln(' ¬š«šï');
readln(b.prep.fam);
writeln(f,b.prep.fam);
writeln('•');
readln(b.prep.nam);
writeln(f,b.prep.nam);
writeln('âç¥á⢮');
readln(b.prep.ot);
writeln(f,b.prep.ot);
writeln('¢¥€šâ¥ ⥬ã ',n,' £® áâ〥â ');
readln(b.tema);
writeln(f,b.tema);
add_stroka(a,b);
writeln(f);
writeln('஀®«Ššâì ¢¢®€? y/n');
readln(s);
until s='n';
close(f);
end;
if d=2 then
begin
assign(f,'mih.txt');
reset(f);
while not eof(f) do
begin
readln(f,b.stud.fam);
readln(f,b.stud.nam);
readln(f,b.stud.ot);
readln(f,b.d);
readln(f,b.m);
readln(f,b.g);
readln(f,b.nom);
readln(f,b.adr);
readln(f,b.prep.fam);
readln(f,b.prep.nam);
readln(f,b.prep.ot);
readln(f,b.tema);
add_stroka(a,b);
readln(f);
end;
close(f);
end;
gd:=detect;
initgraph(gd,gm,'');
end;
procedure korr(var a:stroka);
var k,n:integer;
p:stroka;
b:Tinfa;
begin
closegraph;
writeln('¢¥€šâ¥ ®¬¥à § ¯šáš €«ï ª®à४âšà®¢ªš :');
readln(k);
n:=1;
p:=a;
While (p<>nil)and(n<k) do
begin
n:=n+1;
p:=p^.next;
end;
if (k<=n)and(k>0) then
begin
writeln('¢¥€šâ¥ ä ¬š«šî ',k,' £® áâ〥â ');
write(p^.stud.fam,' -> '); readln(p^.stud.fam);
writeln('¢¥€šâ¥ š¬ï ',k,' £® áâ〥â ');
write(p^.stud.nam,' -> '); readln(p^.stud.nam);
writeln('¢¥€šâ¥ ®âç¥á⢮ ',k,' £® áâ〥â ');
write(p^.stud.ot,' -> '); readln(p^.stud.ot);
writeln('¢¥€šâ¥ € âã ஊ€¥šï ',k,' £® áâ〥â ');
writeln('¢¥€šâ¥ €¥ì');
write(p^.d,' -> ');readln(p^.d);
writeln('¢¥€šâ¥ ¬¥áïæ');
write(p^.m,' -> ');readln(p^.m);
writeln('¢¥€šâ¥ £®€');
write(p^.g,' -> ');readln(p^.g);
writeln('¢¥€šâ¥ ®¬¥à £à㯯ë ',k,' £® áâ〥â ');
write(p^.nom,' -> ');readln(p^.nom);
writeln('¢¥€šâ¥ €à¥á ',k,' £® áâ〥â ');
write(p^.adr,' -> ');readln(p^.adr);
writeln('¢¥€šâ¥ ã箣® à㪮¢®€šâ¥«ï ',k,' £® áâ〥â ');
writeln(' ¬š«šï');
write(p^.prep.fam,' -> ');readln(p^.prep.fam);
writeln('•');
write(p^.prep.nam,' -> ');readln(p^.prep.nam);
writeln('âç¥á⢮');
write(p^.prep.ot,' -> ');readln(p^.prep.ot);
writeln('¢¥€šâ¥ ⥬ã ',k,' £® áâ〥â ');
write(p^.tema,' -> ');readln(p^.tema);
end
else
writeln(' ª®© § ¯šáš ¥â');
writeln('«ï ¯à®€®«Š¥šï Š¬šâ¥ enter');
readln;
gd:=detect;
initgraph(gd,gm,'');
end;
procedure obrab(var a1:stroka;var a:stroka);
var i:integer;
s,s1,s2:string[20];
p:stroka;
b:Tinfa;
begin
closegraph;
a1:=nil;
writeln('¢¥€šâ¥ ä ¬š«šî ã箣® à㪮¢®€šâ¥«ï €«ï ¯®šáª ');
readln(s);
writeln('¢¥€šâ¥ š¬ï ã箣® à㪮¢®€šâ¥«ï €«ï ¯®šáª ');
readln(s1);
writeln('¢¥€šâ¥ ®âç¥á⢮ ã箣® à㪮¢®€šâ¥«ï €«ï ¯®šáª ');
readln(s2);
p:=a;
While p<>nil do
begin
if (p^.prep.fam=s)and(p^.prep.nam=s1)and(p^.prep.ot=s2)
then
begin
b.stud.fam:=p^.stud.fam;
b.stud.nam:=p^.stud.nam;
b.stud.ot:=p^.stud.ot;
b.d:=p^.d;
b.m:=p^.m;
b.g:=p^.g;
b.nom:=p^.nom;
b.adr:=p^.adr;
b.prep.fam:=p^.prep.fam;
b.prep.nam:=p^.prep.nam;
b.prep.ot:=p^.prep.ot;
b.tema:=p^.tema;
add_stroka(a1,b);
end;
p:=p^.next;
end;
writeln(' ë¥ ®¡à ¡®â ë, €«ï ¯à®á¬®âà १ã«ì â ⠢롥àšâ¥ ¯ãªâ ¯¥ç âì १ã«ìâ â ');
writeln('«ï ¯à®€®«Š¥šï Š¬šâ¥ enter');
readln;
gd:=detect;
initgraph(gd,gm,'');
end;
procedure pechat(var a:stroka);
const s:array[1..6] of string=('',' â ஊ€','à㯯 ','€à¥á','㪮¢®€','¥¬ ');
var i,j:integer;
f:text;
p:stroka;
b:Tinfa;
begin
closegraph;
writeln(' ë¥:');
p:=a;
While p<>nil do
begin
writeln('²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²');
write(s[1]:9);
write(p^.prep.fam:15);
write(p^.prep.nam:15);
write(p^.prep.ot:15);
writeln;
write(s[2]:9);
write(p^.d:7,p^.m:3,p^.g:5);
writeln;
write(s[3]:9);
write(p^.nom:15);
writeln;
write(s[4]:9);
write(p^.adr:15);
writeln;
write(s[5]:9);
write(p^.prep.fam:15);
write(p^.prep.nam:15);
write(p^.prep.ot:15);
writeln;
write(s[6]:9);
write(p^.tema:15);
writeln;
writeln('²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²');
readln;
p:=p^.next;
end;
readln;
gd:=detect;
initgraph(gd,gm,'');
end;
procedure pechat_f(var a:stroka);
var f:text;
begin
assign(f,'mih.txt');
rewrite(f);
While a<>nil do
begin
writeln(f,a^.stud.fam);
writeln(f,a^.stud.nam);
writeln(f,a^.stud.ot);
writeln(f,a^.d);
writeln(f,a^.m);
writeln(f,a^.g);
writeln(f,a^.nom);
writeln(f,a^.adr);
writeln(f,a^.prep.fam);
writeln(f,a^.prep.nam);
writeln(f,a^.prep.ot);
writeln(f,a^.tema);
writeln(f);
a:=a^.next;
end;
close(f);
end;
var list,list1:stroka;
{¥«® ¯à®£à ¬¬ë}
begin
gd:=detect;
initgraph(gd,gm,'');
n:=0;
repeat
cleardevice;
setfillstyle(1,5);
setcolor(14);
for i:=1 to 6 do
begin
bar(200,i*50,400,i*50+40);
outtextxy(230,i*50+10,menu[i]);
end;
i:=1;
setfillstyle(1,15);
setcolor(1);
bar(200,i*50,400,i*50+40);
outtextxy(230,i*50+10,menu[i]);
repeat
ch:=readkey;
if ch=#0 then
ch:=readkey;
setfillstyle(1,5);
setcolor(14);
bar(200,i*50,400,i*50+40);
outtextxy(230,i*50+10,menu[i]);
case ch of
#80:if i<6 then i:=i+1;
#72:if i>1 then i:=i-1;
end;
setfillstyle(1,15);
setcolor(1);
bar(200,i*50,400,i*50+40);
outtextxy(230,i*50+10,menu[i]);
until ch=#13;
case i of
1:init;
2:korr(list);
3:pechat(list);
4:obrab(list1,list);
5:pechat(list1)
end;
until i=6;
pechat_f(list);
closegraph;
end.