遇到这样一个问题,假设我有一个类型库 A.TLB,里面声明了一个接口类型, IA = interface(IDispatch)
... //methods
end;
然后我又设计了另一个ActiveX Library,名称为B.DLL,类型库为 B.TLBB.TLB中有
IB = interface(IA)
end;在 B.DLL 中,有一个 IA 的实现 TAImpl,
///////////////////////////////////////////
unit AImpl;
....
TAImpl = class(TAutoObject, IA)
....
end;
......
initialization
begin
TAutoObjectFactory.Create(
ComServer,
TAImpl,
CLASS_A,
ciInternal,
tmApartment
);
end;end.
////////////////////////////// end of AImpl
然后 IB的实现中,通过TAImpl对象的delegation来实现 TBImpl = class(TAutoObject, IA, IB)
private
fAImpl: TAImpl;
protected
property AImpl: TAImpl read fAImpl implements IA, IB; end;....contructor TBImpl.Create();
begin
inherited;
fAImpl := TAImpl.CreateAggregated(Self);
end;一方面,IA必须以delegation的方式实现
另一方面,TAImpl还必须实现为inner object以上是我的设计和需求但是在实现中遇到一个问题就是在前面的AImpl单元中的initialization
一节中的AutoObjectFactory创建的问题它返回一个异常,指出在类型库中没有找到IA的类型信息因为B.DLL只带有B.TLB中所包含的类型信息,
而不包含在A.TLB中声明的IA的类型信息
那么,我该怎么办呢?我要怎样做才能使得我在B.DLL中顺利创建TAImpl对象呢?是否这个TAImpl必须实现在A.DLL中,
然后通过IClassFactory来创建Aggregated对象?
愿大大们花点宝贵的时间给我讲解讲解先谢了
... //methods
end;
然后我又设计了另一个ActiveX Library,名称为B.DLL,类型库为 B.TLBB.TLB中有
IB = interface(IA)
end;在 B.DLL 中,有一个 IA 的实现 TAImpl,
///////////////////////////////////////////
unit AImpl;
....
TAImpl = class(TAutoObject, IA)
....
end;
......
initialization
begin
TAutoObjectFactory.Create(
ComServer,
TAImpl,
CLASS_A,
ciInternal,
tmApartment
);
end;end.
////////////////////////////// end of AImpl
然后 IB的实现中,通过TAImpl对象的delegation来实现 TBImpl = class(TAutoObject, IA, IB)
private
fAImpl: TAImpl;
protected
property AImpl: TAImpl read fAImpl implements IA, IB; end;....contructor TBImpl.Create();
begin
inherited;
fAImpl := TAImpl.CreateAggregated(Self);
end;一方面,IA必须以delegation的方式实现
另一方面,TAImpl还必须实现为inner object以上是我的设计和需求但是在实现中遇到一个问题就是在前面的AImpl单元中的initialization
一节中的AutoObjectFactory创建的问题它返回一个异常,指出在类型库中没有找到IA的类型信息因为B.DLL只带有B.TLB中所包含的类型信息,
而不包含在A.TLB中声明的IA的类型信息
那么,我该怎么办呢?我要怎样做才能使得我在B.DLL中顺利创建TAImpl对象呢?是否这个TAImpl必须实现在A.DLL中,
然后通过IClassFactory来创建Aggregated对象?
愿大大们花点宝贵的时间给我讲解讲解先谢了
解决方案 »
- ___今天我生日 hehe^^___
- delphi打开excel如何保存?
- 请问如何对image图形边缘进行柔代处理呢?
- 创建不了MDIChild窗口?
- 关于异构数据的操作问题,帮我一把
- 急!调试程序时出现..."Class TmemoField not found."...,居然没人解决?
- pchar如何转化为byte类型的array数组?
- 公司需要,找一个delpfi程序开发员
- 有无表达类似回路图结构(多节点间有连通)的控件?
- Delphi在Table中查找,find和locate有什么不同,为什么locate查找多字段时,只看第一个?
- 诚聘:网页设计人员、asp程序员、delphi程序员(石家庄)
- 如何屏蔽窗口右上方的按钮?求救!在线等!
帮你UP