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

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

ListView и объекты [D5, XP]


VICTOR_ ©   (2007-10-11 16:00:00) 

Просьба подсказать, если я создал объект и ссылку на него указал в значение Data для TListItem, будет ли он уничтожен и освобождена память при вызове FreeAndNil для TListItem?
Как корректно будет поступать в данном случае?

Пример кода
procedure TForm1.Button1Click(Sender: TObject);
var
 LItem: TListItem;
begin
 LItem := ListView1.Items.Add;
 LItem.Data := Pointer(CreateOleObject('Excel.Application'));
 LItem.Data := nil;//нужен ли данный код?
 FreeAndNil(LItem);
end;


VICTOR_   (2007-10-11 16:42:00) [1]

Еще раз спасибо!


Сергей М.   (2007-10-11 16:33:00) [2]


> VICTOR_   (11.10.07 16:26) [4]


Имелось ввиду, что об nilять переменную LItem после вызова деструктора объекта, на который ссылается переменная, нет никакого резона - время жизни локальной переменной равно времени жизни подпрограммы, в которой она объявлена.

Так что либо
  LItem.Free
либо
  ListView1.Items[LItem.Index].Delete;


VICTOR_   (2007-10-11 16:26:00) [3]


> > FreeAndNil(LItem);
>
> а это - тем более не нужно

Это нужно для вызова обработчика
TListView.OnDeletion
либо вызывать
ListView1.Items[0].Delete;


VICTOR_   (2007-10-11 16:15:00) [4]

Спасибо!


clickmaker   (2007-10-11 16:14:00) [5]


> FreeAndNil(LItem);

а это - тем более не нужно


Сергей М.   (2007-10-11 16:06:00) [6]


> будет ли он уничтожен и освобождена память при вызове FreeAndNil
> для TListItem?


Нет, не будет.


> Как корректно будет поступать


Обрабатывать событие TListView.OnDeletion, где и уничтожать ассоциированный с удаляемым элементом (см. параметр Item: TListItem) объект.


> LItem.Data := nil;//нужен ли данный код?


Ни в коем случае !


Наверх

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