Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.046 c
2-1192105505
vint45
2007-10-11 16:25
2007.11.04
Резкое увеличение размера динамического массива


15-1190814358
Галинка
2007-09-26 17:45
2007.11.04
что почитать про VMWare


15-1190710324
shlst
2007-09-25 12:52
2007.11.04
Activesync и КПК, сервиспак2 причина вражды :)


15-1189794621
AntiUser
2007-09-14 22:30
2007.11.04
Microsoft обновляет файлы Windows без ведома пользователей


11-1175321503
Trible
2007-03-31 10:11
2007.11.04
Options для EditBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский