Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Assigned & Dispose. Что не так?


Cosinus ©   (2004-12-21 12:20:00) 


if Assigned(Add_lb.Items.Objects[Add_lb.Items.Count-1]) then
   Dispose(Add_lb.Items.Objects[Add_lb.Items.Count-1]);
Почему то не работает... Не подскажите, почему?


icWasya   (2004-12-21 15:12:00) [1]

правильный код такой

 Add_lb.Items.Objects[Add_lb.Items.Count-1].Free;
 Add_lb.Items.Objects[Add_lb.Items.Count-1]:=Nil;


PVOzerski   (2004-12-21 14:13:00) [2]

Лучше б ты FreeAndNil сделал...


Cosinus   (2004-12-21 13:15:00) [3]

I>
> begin...end ©   (21.12.04 12:26) [2]

Да, это ListBox.

> Суслик ©   (21.12.04 12:42) [3]

Да, я хотел избежать утечек памяти. В итоге сделал так...

if Assigned(Add_lb.Items.Objects[Add_lb.Items.Count-1]) then
   Add_lb.Items.Objects[Add_lb.Items.Count-1].Free;

Всем спасибо.


Суслик   (2004-12-21 12:42:00) [4]


> Почему то не работает... Не подскажите, почему?

А что должно быть?
Если имеется в виду освобождения памяти, то нужно делать так
dispose(PYouType(Obj)), т.к. приводить к типу данных, на который указывает указатель


begin...end   (2004-12-21 12:26:00) [5]

> Cosinus ©   (21.12.04 12:20)

Add_lb - это ListBox ?

Объекты уничтожаются с помощью деструктора, метода Free или процедуры FreeAndNIL.


PVOzerski   (2004-12-21 12:25:00) [6]

1) кабы знать еще тип Add_lb.Items.Objects[Add_lb.Items.Count-1]...
2) В любом случае: dispose неделает значения указателя на высвобожденную область памяти равным nil, а assigned именно на равность nil и проверяет. Отсюда делай вывод.


Наверх

Титульная страница Поиск, карта сайта Написать письмо