Здравствуйте!У меня проблема при переделке динамической базы данных в объектную.Компилятор ругается на неопределенное опережающее описание(ошибка 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.