![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динам массивы [Delphi, Windows]
Falcon(TFSoft) © (2004-10-20 19:38:00)Здравствуйте ув. мастера!
Помогите решить вопрос, с памятью. Возникла ситуация, при которой со спрайтом необходимо хранить динамический массив, настройки спрайта, динамический т.к. я посчитал не выгодным храниьт разное кол. данных при фиксированной длинне, но не в этом суть. Так вот по его создании я вызываю функцию, которая инициализирует их, а именно:
Procedure TImageSpriteEX_2.Init (Name: String; var ImgList: TDXImageList);
var
i : byte;
t : TAS_EX;
begin
i := 0;
t := MainFile.FindTAS_EX(name);
выделям память...
SetLength (Massiv, t.count);
while i
П7 (2004-10-22 16:26:00) [1]
> Владислав © (22.10.04 16:10) [6]
Очень информативная запись... Поподробнее, пожалуйста.
Владислав (2004-10-22 16:10:00) [2]> П7 (21.10.04 14:37) [5]
Чушь.
П7 (2004-10-21 14:37:00) [3]
> Falcon(TFSoft) © (20.10.04 19:38)
Вот после программ с таким кодом остаётся только загаженная память!!! Кто тебя учил, что динамически выделенная память очищается автоматически? Сказки всё это!!! Не верь.
> NikeOLD © (21.10.04 11:48) [4]
Поддерживаю.
NikeOLD (2004-10-21 11:48:00) [4]
> ASoft (21.10.04 02:50) [3]
Как он тебе сообщит в случае динамического массива?
> Falcon(TFsoft) ©
Неплохо бы и SetLength(<массив>, 0) делать.
ASoft (2004-10-21 02:50:00) [5]По идее, о выходе за границы массива компилятор должен сообщить сразу во время выполнения проверки массива. InvalidPointer pointer operation хитрая ошибка, которую трудно, порой, отследить, в отличии от нарушения ранга массива.
Falcon(TFsoft) (2004-10-20 22:11:00) [6]Наверное самая распрастранённая ошибка, спасибо!
miek (2004-10-20 22:05:00) [7]while i<t.count
Иначе выходишь за границы массива.
Индексы должны лежать в границах [ 0, t.count-1]