![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TInterfacedList.Delete - произойдёт ли вызов _Release
Ega23 © (2007-04-27 10:28:00)или явным образом интерфейс к nil надо после удаления из списка приводить?
Ega23 (2007-04-27 10:35:00) [1]
Self.Put(Index, nil); <-------
IInterface(List[Index]) := Item; <---------------
Блин, вот я баран тупорылый!!!
В исходники првым делом залез, а вот то, что Item это входной параметр - чё-то сразу не допёр.
Всё, вопрос снят, большое спсаибо!
Ega23 (2007-04-27 10:33:00) [2]
> По прямой аналогии с авторазрушением объекта при его удалении
> из TObjectList.
Там нюанс есть. Можно на список задачу об удалении возложить, а можно самому.
Собственно, я так и думал, что само удалиццо, но убедиться хотел.
Игорь Шевченко (2007-04-27 10:32:00) [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;
Сергей М. (2007-04-27 10:30:00) [4]
> произойдёт ли вызов _Release
Обязан произойти.
По прямой аналогии с авторазрушением объекта при его удалении из TObjectList.
Ega23 (2007-04-27 10:29:00) [5]Блин. TInterfaceList, кончено...