一个很简单的调用Activex的问题(100分)

  • 主题发起人 主题发起人 delphininum
  • 开始时间 开始时间
D

delphininum

Unregistered / Unconfirmed
GUEST, unregistred user!
在下正在学习delphi,遇到一个调用Activex的问题:
现在有一个已经用VC++编写好并已注册的ocx。我将其加入Delphi中,
此ocx中存在一个可视控件MYMapview和一个不可视的东东MYBook。我想应该是一个接口吧,
在VC编写时MYBook是一个接口IMYBook和相对应的类CMYBook。
现在我在Delphi中声明myBook变量并使用:
procedure XXXXXXX()
var
myBook: MYBook;
begin
MYBook.Loadmybook('....');
.......
end
现在程序运行到Loadmybook处出错,由Watch得出此时MYBook为nil。这是怎么回事?由于
本人对此很不熟悉,原来利用VB同样方法调用一切正常,想换成Delphi试一试,竟不成,
请各位大侠指点一二。不胜感激。
不知我说清楚了没?
 
老哥你要先create 才能用吧
var
myBook: MYBook;
begin
myBook:= MYBook.create;
MYBook.Loadmybook('....');
end



 
lqy老哥:
MYBook是加控件的时候自动生成的TLB文件中的,没有Create方法阿,
我想是不是它的类型是dispinterface的原因阿。
我打开看了,其声明是
Type
IMYBook = dispinterface;
MYBook = IMYBook
IMYBook = dispinterface
['{DD19CB83-E0D8-11D4-A52F-0050BABA0B65}']
property Name: WideString dispid 1;
......
function Loadmybook('...');
.....
 
喔﹐你的Activex是 vc寫的﹐我不知道和delphi有什么不同
我一般這樣調用,前提是tlb中有coclass類的定義(應該有﹐
不然你的COM都不能在asp中調用)
var
myBook: MYBook;
begin
mybook:=coclass.create;
mybook.xxxxxxx,
end;

如果不行﹐最好把你的文件post上來看看


 
接受答案了.
 
后退
顶部