![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление интерфейсных объектов [D6, Win2k]
masik © (2002-04-22 17:21:00)господа, есть набор интерфейсов и классов, которые их реализует. Естественно возникает вопрос корректного удаления этих классов. Как я понимаю Дельфя удаляет их раньше чем я. Как это можно отследить.
masik (2002-04-22 17:48:00) [21]Код откровенно огроменный и многомодульный,но попробую объяснить.
объекты - VCL компоненты, при создании объекта его ссылка заносится в List
Result:=TControlClass(FindClass(ControlClass)).Create(Self);
FControls.Add(Result);
при очистке списка и удалении компонентов все нормально
for i:=FControls.Count-1 downto 0 do begin
TObject(FControls.Items[i]).Free;
FControls.Delete(i);
end;
а при завершении проекта EXCEPTION.
И еще попутный вопросик. Я добавляю к списку интерфейсов еще один, в котором описывается только один метод, и ентот объект вообще не дается нормально удаляться. Как я понимаю когда нет явной ссылки на него и компонент невидим дельфи удаляет его без пердупреждения?
kull (2002-04-22 17:32:00) [22]Да и все зависит, конечно от кода.
Естественно неплохо-бы пример или конкретней о том чего тебе надо.
kull (2002-04-22 17:31:00) [23]Delphi удаляет ссылку на интерфейс когда счетчик ссылок на объект становится равным 0.
А уменьшает счетчик когда переменная содержащая ссылку на интерфейс выходит из блока видимости.
Cobalt (2002-04-22 17:30:00) [24]А из чего видно, что
> Дельфя удаляет их раньше чем я.?
Есть конкретный пример?