![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Список объектов с интерфейсами.
Token © (2013-02-21 16:42:00)Создается список обектов, по ходу дела интерфейсы этих объектов раздаются дин. библиотекам.
При очистке списка, надоли уничтожать объекты в нем? Или при выдаче дин. библиотеке интерфейса нового объекта старый объект будет уничтожен автоматически?
Cobalt (2013-02-25 15:02:00) [1]>>при выдаче дин. библиотеке интерфейса нового объекта старый объект будет уничтожен автоматически?
а это смотря как устроена работа с этими интерфейсами.
автоматически удаляются только интерфейсы, если на них нет больше ссылок.
А вот где удалять классы - это целиком твоя головная боль.
Где захочешь - там и освобождай, но не забывай про последствия.
Token (2013-02-21 17:02:00) [2]В списке Assembly могут оказаться как новые, так и старые, у которых уже есть ссылка на интерфейсы потоков данных из предыдущего списка.
Token (2013-02-21 16:53:00) [3]
IDataStreamIntf=interface(IUnknown)
procedure AddValue(DT: TDateTime; DataType: TValueType; Error: TErrorType;
DataCount: integer; Values: PByteArray);stdcall;
end;
IDataStreamsIntf=interface(IUnknown)
function GetStream(const DevID, Param: OleStr): IUMTDataStreamIntf;stdcall;
end;
fDataStreams.Clear;
for c := 0 to Assembly.Count-1 do
with dtmData do
if dtsToolModels.Locate(fnDevID,Assembly[c].DevID,[]) then
begin
while not dtsToolParams.Eof do
begin
fDataStreams.AddStream(Assembly[c].DevID,dtsToolParamsParam.Value);
dtsToolParams.Next;
end;
Assembly[c].Intf.SetStreams(fDataStreams);
end;
Игорь Шевченко (2013-02-21 16:47:00) [4]код в студию