Форум: "Основная";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
ВнизCOM: причуды реализации на Delphi Найти похожие ветки
← →
mifril (2004-03-02 01:00) [0]Друг просит помочь ему разобраться.
Столкнулся я на днях со следующей интересной проблемой. В детали посвящаю и Вас, надеюсь будет интересно поломать над нею голову, разделяя мою нелегкую участь. Итак, задача в следующем. Имеется ActiveX Library, в которую добавлено два Automation Object. Требуется, чтобы один из объектов, пусть, скажем, ему соответствует класс TPlugin и интерфейсы IPlugin/IPluginDisp, при своей инициализации (пусть она происходит вызовом функции-члена Init) создавал экземпляр другого объекта, TFeature, которому соответствуют интерфейсы IFeature/IFeatureDisp, и впоследствии предоставлял к созданному экземпляру этого объекта доступ через свое общедоступное read-only свойство, что-то в таком духе:
TPlugin = class(TAutoObject, IPlugin)
protected
procedure Init; safecall;
function Get_Feature: IFeature; safecall;
private
fFeature: TFeature;
end;
Соответствующий интерфейс выглядят так:
ICore = interface(IDispatch)
["{...}"]
procedure Init(const lpUnk: IUnknown); safecall;
function Get_Feature: IFeature; safecall;
property Feature: IFeature read Get_Feature;
end;
В методе Init происходит примерно следующее:
procedure TPlugin.Init;
begin
fFeature:= TFeature.Create;
end;
Ну а что делает Get_Feature догадаться несложно - возвращает fFeature.
Так вот, требуется, например, чтобы на JScript можно было написать такой код:
var MyPlugin=new ActiveXObject("MyLib.Plugin");
if (MyPlugin) MyPlugin.Feature.SayHello();
где SayHello - какой-нибудь метод объекта TFeature.
В таком виде как это реализовано у меня, подобный код выдает ошибку JScript о том, что
MyPlugin.Feature есть null или не является объектом
Я также пробовал возвращать через функцию Get_Feature не интерфейс IFeature а IUnknown, и тип OleVariant. Ничего не помогает. В чем может быть загвоздка? Огромная просьба, братья по разуму, помогите коллеге в смятении, это важный момент, из-за него встал большой и серьезный проект.
← →
nikkie (2004-03-02 01:17) [1]гы гы гы.
по-моему твой друг на прошлой неделе уже тут был.
и ему уже ответили.
http://delphimaster.net/view/1-1077674708/
так что это не причуды COM, а программерские причуды :))
← →
mifril (2004-03-02 02:08) [2]ХЫ =) Чудной товарищ. Забыл что-ли, что был здесь. В любом случае, спасибо за помощь :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c