Текущий архив: 2004.07.04;
Скачать: CL | DM;
Вниз
Как работать с интерфейсами? Найти похожие ветки
← →
GrayFace © (2004-06-21 11:10) [0]Сделал свой интерфейс. Сгенерил ["16-байтовый-ключ"], пишу
Sender:TObject
(Sender as IMyInterface).
Ругается: Invalid Typecast.
← →
clickmaker © (2004-06-21 11:13) [1]TInterfacedObject(Sender) as IMyInterface
← →
U (2004-06-21 11:22) [2]var intf: IMyInterface;
if Sender.GetInterface(IMyInterface, intf) then
begin
intf.DoSomethng;
end;
← →
Тимохов © (2004-06-21 11:28) [3]во случае применения ответа [1] и НЕ применения специальных мер рискуете остаться без объекта sender. Дело в том, что после отработки as делается _addRef, а потом делается _release.
И если у вас sender это просто объект, имеющий на момент вызова as свойствао refcount равным 0, то после команды as объект у вас просто удалится (отработает деструктор). А далее - сами знаете, будут av.
Одно из решений - не мешать модель интрефейсов и модель объектов (как советует Эрик Хармон). Воторое решение - отказаться от подсчета ссылок сделав _addref и _release пусташками. Наверное есть еще - сейчас не соображу...
← →
clickmaker © (2004-06-21 11:35) [4]
> Наверное есть еще - сейчас не соображу...
Например
Sender.ComObject.QueryInterface(IID_IMyInterface, Intf)
Страницы: 1 вся ветка
Текущий архив: 2004.07.04;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.022 c