COM 接口得到实现该接口的对象实例

参见http://www.wangchao.net.cn/bbsdetail_47176.html

 

外部调用Vote1.Base :=Base1.DefaultInterface;

 

Base属性设置为Read|Write|Write byref, Type 为Base*。

 

procedure TVote.Set_Base(const Value: Base);
var
   eEntry: PInterfaceEntry;
   eAutoObjFactory: TAutoObjectFactory;
begin
  FBase := Value;

  //得到类工厂
eAutoObjFactory:= TAutoObjectFactory(ComClassManager.GetFactoryFromClassID(CLASS_Base));
//得到接口标识的接口项
eEntry:= eAutoObjFactory.DispIntfEntry;
//IOffset为接口的偏移地址,eResource减去IOffset所得到的地址就是对象实例
FTBase:= TBase(Integer(FBase)-eEntry.IOffset);

 

  if FTBase <>nil then
    FTBase.OnTimerOK :=eveTimeOK

  else
    FTBase.OnTimerOK := nil;
end;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值