W programie glownym wywoluje sobie 3x procedure wczytania do zmiennej nowy danych i zapisu ich do listy, ale przed 3 wczytaniu danych z klawiatury program wysypuje sie. Tzn Pascal sie wylacza i wywala mi w windowsie blad-okienko: "Napotkano niedozwolona instrukcje". Masz to samo? Zauwazylem ze gdy skroce striungi w deklaracji typow wszystko jest ok. Czyli problem moze tkwic w braku pamieci? Tylko czemu? Przeciez po to sa listy, zeby lokowac w nich duuuuze dane.

Pomocy :)


   USES Crt;
   CONST plik_licznik_id='licznik.dat';
   TYPE wskaznik=^wezel;
        obiekt=record
                   id:word;
                   tytul:string[40];
                   rezyser:string[30];
                   ilosc:word;
                   dostepna:boolean;
                   rok:word;
               end;
        wezel=record
                  dane:obiekt;
                  nast:wskaznik;
		  poprz:wskaznik;
              end;

    PROCEDURE wczytaj_dane(var nowy:obiekt; var ost_id:word);
        begin
            inc(ost_id);
            nowy.id:=ost_id;
            with nowy do
            begin
                write('Tytul: ');
                readln(tytul);
                write('Rezyser: ');
                readln(rezyser);
                write('Ilosc: ');
                readln(ilosc);
                write('Rok: ');
                readln(rok);
            end;
        end;

    PROCEDURE wypisz(w:wskaznik);
        var p:wskaznik;
        begin
            p:=w;
            while p<>nil do
            begin
                write(p^.dane.id,'  ',p^.dane.tytul,'   ');
                p:=p^.nast;
            end;
       end;

    PROCEDURE dodaj(var w:wskaznik; nowy:obiekt; sort:byte);
        var k,p,t:wskaznik;
        begin
            if w=nil then
            begin
                new(w);
                w^.dane:=nowy;
                w^.nast:=nil;
                w^.poprz:=nil;
            end
            else
            begin
                p:=w;
                case sort of
                    1:begin
                      while p^.nast<>nil do
                      begin
                          if (nowy.id>p^.dane.id) and (nowy.id<p^.nast^.dane.id) then
                              begin
                                  break;
                              end;
                          p:=p^.nast;
                      end;
                      end;
                    2:begin
                      end;
                    3:begin
                      end;
                    4:begin
                      end;
                end;
                new(t);
                t^.dane:=nowy;
                t^.nast:=p^.nast;
                t^.poprz:=p^.poprz;
                p^.nast^.poprz:=t;
                p^.nast:=t;
            end;
        end;

    VAR w:wskaznik;
        sort:byte;
        nowy:obiekt;
        ost_id:word;


BEGIN
    ClrScr;
    sort:=1;
    ost_id:=0;
    wczytaj_dane(nowy,ost_id);
    dodaj(w,nowy,sort);
    wczytaj_dane(nowy,ost_id);
    dodaj(w,nowy,sort);

    wczytaj_dane(nowy,ost_id);
    dodaj(w,nowy,sort);
    wypisz(w);
END.