Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
14-43858
race1
2004-01-23 13:32
2004.03.14
winamp multiuser


14-43771
Undert
2004-02-19 11:31
2004.03.14
Помогите с SQL запросом


3-43275
dolmat
2004-01-23 13:45
2004.03.14
Нужен компонент для работы с базами .cds


11-43416
Vladimir Kladov
2003-06-27 14:16
2004.03.14
Forum in English


1-43423
Vlad25
2004-03-03 18:44
2004.03.14
Добавление к версии build