Здравствуйте, Zip, Вы писали:
Zip>Zip>begin
Zip> GetMem(Floor,100,200);
Zip> P:=Point(10,20);
Zip> GetMem(Floor[P.x,P.y],SizeOf(Floor[P.x,P.y]^)); //SizeOf(Floor[P.x,P.y]^=8.
Zip> //Если написать GetMem(Floor[P.x,P.y],8), то
Zip> //всё работает. Почему так?
Zip> SetLength(Floor[P.x,P.y].Descript,1);}
Zip>end;
Zip>
Zip>От чего эта проблема?
1) Заменить GetMem(Floor,100,200) на SetLength(Floor,100,200)
2) Динамические массивы необходимо инициализировать, прежде чем с ними можно будет работать, GetMem этого не делает. В данном случае вместо GetMem(Floor[P.x,P.y],SizeOf(Floor[P.x,P.y]^)) нужно New:
begin
SetLength(Floor,100,200);
P:=Point(10,20);
New(Floor[P.x,P.y]); //SizeOf(Floor[P.x,P.y]^=8.
SetLength(Floor[P.x,P.y].Descript,1);
end.