Главная страница
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.034 c
3-43334
pashtet
2004-02-14 19:09
2004.03.14
ADO и русские буквы!


1-43519
Vitaly_old
2004-02-28 10:34
2004.03.14
vmesto_russkix_bukv_znaki_voprosov


14-43759
Ega23
2004-02-19 14:55
2004.03.14
У кого книжка есть


1-43429
Анна
2004-03-01 14:35
2004.03.14
twain сканер


1-43480
Pa5ha
2004-02-29 16:01
2004.03.14
Файлы в папке.