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

来源:互联网 发布:网络声优招聘 编辑:程序博客网 时间:2024/05/18 01:22

参见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;

 

原创粉丝点击