一个进程内com下的dll,在delphi下导入安装时在安装类列中有十个类,为什么装上后在控年板中只有4个,还有6个类为什么没有显示在控件板中?(200分)

  • 主题发起人 主题发起人 ldsjlzy
  • 开始时间 开始时间
L

ldsjlzy

Unregistered / Unconfirmed
GUEST, unregistred user!
dll是用vc做的.里面有几个事件,我想响应它们,但连他们的类都装不上,大侠帮忙。
 
在Register中没有列出吧,不过既然有这个类,也已经安装了,应该可以直接使用
 
对,在tlb中的Register中没有列出。但没在控件板中出现。
那几个没出现在控件板的类中有几个事件。所以,要动态实现
它的事件并不好办。大家看是什么原因?
 
那你在tlb中的Register中列出一下看看。

zhaogshunzhong说的也对呀!应该是可以使用了。
 
tlb是安装dll后delphi自动生成的。改了也没用。
动态使用的话,dll内这些类提供的事件不好实现。
如果能安装上,一拖上去就使用。请大家帮忙。
 
你直接用用看,
加入一行:
var var1:TClass1

TClass1是没在控件板出现的类,看看编译能不能通过,如果通过说明可以使用,再慢慢摸索它的使用方法
 
这样能通过,因为tlb中有它的定义。只是没有被delphi包成T开头的类名。还是原始的CoXXX类名。是不是这个dll有问题?
 
没什么问题,很正常,你可以慢慢摸索它的用法,
var var1:Class1;

先创建,可能是
var1:=Class1.Create(..)或
var1:=CoClass1Create(..)


然后定义事件
Procedure Proc(...);

var1.OnXX:=Proc;

 
此事件非彼事件.他不是vcl下的用属性作事件指件的事件,而是进程内
com下dll的回调事件。如果要实现接收,恐怕还要实现一个接收类才行。

谁知道其它几个类没有显示是怎么回事吗?不知是dll的原因还是客户端原因不。
不能显示和能显示的类在dll中的接口定义如下,好象没什么区别。
不能显示的类定义:
[
uuid(32107165-8144-11D4-A2EF-0000E8780CAE),
version(1.0),
appobject
]
coclass AxiomSystem {
[default] interface _AxiomSystem;
interface _IClient;
[default, source] dispinterface __AxiomSystem;
};
能显示的类定义:
[
uuid(29C77339-83F6-11D4-A2F5-0000E8780CAE),
version(1.0)
]
coclass AxiomApps {
[default] interface _AxiomApps;
};
就上面多了个appobject选项。好像是跟传参数的指针有关。
至于这两个类的接口定义除方法外,一模一样。
请大侠帮看看。是不是dll的原因导致装不上。但在vb下可正常使用(vb下是动态加载的)
还是我客户端安装有问题。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部