Witam.
Tworzę potwora "bazę danych". Ot mieszana struktura na wskaźnikach.
Typy po kolei (_ptr oznacza wskaźnikowy)
head : civil_ptr
building : patch
patch1 : buildings
down : units_ptr
W skrócie wszystko na rekordach.
Problem jest jednak taki, że muszę się po tym potworze poruszać.
do procedury poniższej chciałem po zmiennej przekazywać
x := head.building.patch1
Kwestia tego, że wydawało mi się, iż typ dla zmiennej x powinien być taki sam jak dla head. Każdy z typów niżej zawiera się w tym wyższym. Tzn. w civil_ptr mamy element typu patch, w patch typu buildings etc.
Niestety tak nie idzie.
Dając x typ 1 wyżej tj. chcąc przypisać x := head.building.patch1 : buildings nagle okazuje się, że head.building.patch1.down wskazuje na nil,a po przypisaniu do x : buildings dla x.down na coś wskazuje.
Ogólnie nie mam pojęcia jak poruszać się po tej bestii. Liczę na wsparcie.
if head.building.patch1.down <> nil then
begin
reading (main, tmp, a);
end
else
begin
assign (a, head.building.patch1.value);
reset (a);
new (head.building.patch1.down);
tmp := head.building.patch1.down;
tmp.next := nil;
tmp.prev := nil;
main := tmp;
readln (a,line);
reading2 (tmp,a,line);
end;