Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
ВнизListView и объекты Найти похожие ветки
← →
VICTOR_ (2007-10-11 16:00) [0]Просьба подсказать, если я создал объект и ссылку на него указал в значение 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;
← →
Сергей М. © (2007-10-11 16:06) [1]
> будет ли он уничтожен и освобождена память при вызове FreeAndNil
> для TListItem?
Нет, не будет.
> Как корректно будет поступать
Обрабатывать событие TListView.OnDeletion, где и уничтожать ассоциированный с удаляемым элементом (см. параметр Item: TListItem) объект.
> LItem.Data := nil;//нужен ли данный код?
Ни в коем случае !
← →
clickmaker © (2007-10-11 16:14) [2]
> FreeAndNil(LItem);
а это - тем более не нужно
← →
VICTOR_ (2007-10-11 16:15) [3]Спасибо!
← →
VICTOR_ (2007-10-11 16:26) [4]
> > FreeAndNil(LItem);
>
> а это - тем более не нужно
Это нужно для вызова обработчика
TListView.OnDeletion
либо вызывать
ListView1.Items[0].Delete;
← →
Сергей М. © (2007-10-11 16:33) [5]
> VICTOR_ (11.10.07 16:26) [4]
Имелось ввиду, что обnilять переменную LItem после вызова деструктора объекта, на который ссылается переменная, нет никакого резона - время жизни локальной переменной равно времени жизни подпрограммы, в которой она объявлена.
Так что либо
LItem.Free
либо
ListView1.Items[LItem.Index].Delete
;
← →
VICTOR_ (2007-10-11 16:42) [6]Еще раз спасибо!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c