![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;//нужен ли данный код?
Ни в коем случае !