Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизTInterfacedList.Delete - произойдёт ли вызов _Release Найти похожие ветки
← →
Ega23 © (2007-04-27 10:28) [0]или явным образом интерфейс к nil надо после удаления из списка приводить?
← →
Ega23 © (2007-04-27 10:29) [1]Блин. TInterfaceList, кончено...
← →
Сергей М. © (2007-04-27 10:30) [2]
> произойдёт ли вызов _Release
Обязан произойти.
По прямой аналогии с авторазрушением объекта при его удалении из TObjectList.
← →
Игорь Шевченко © (2007-04-27 10:32) [3]
> произойдёт ли вызов _Release
1. Посмотреть
2. Попробовать
procedure TInterfaceList.Delete(Index: Integer);
begin
with FList.LockList do
try
Self.Put(Index, nil); <-------
Delete(Index);
finally
Self.FList.UnlockList;
end;
end;
procedure TInterfaceList.Put(Index: Integer; const Item: IInterface);
begin
with FList.LockList do
try
if (Index < 0) or (Index >= Count) then Error(@SListIndexError, Index);
IInterface(List[Index]) := Item; <---------------
finally
Self.FList.UnlockList;
end;
end;
← →
Ega23 © (2007-04-27 10:33) [4]
> По прямой аналогии с авторазрушением объекта при его удалении
> из TObjectList.
Там нюанс есть. Можно на список задачу об удалении возложить, а можно самому.
Собственно, я так и думал, что само удалиццо, но убедиться хотел.
← →
Ega23 © (2007-04-27 10:35) [5]
Self.Put(Index, nil); <-------
IInterface(List[Index]) := Item; <---------------
Блин, вот я баран тупорылый!!!
В исходники првым делом залез, а вот то, что Item это входной параметр - чё-то сразу не допёр.
Всё, вопрос снят, большое спсаибо!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.044 c