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.