Re[2]: ВЫделение памяти
От: wallaby  
Дата: 21.11.07 15:26
Оценка: 3 (1)
Здравствуйте, 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.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.