S softdeveloper Unregistered / Unconfirmed GUEST, unregistred user! 2003-08-29 #1 外部在调用COM时,如果参数是对象,只能以接口的形式传入。可是在COM内部,有时却要使用到对象,有什么方法可以把接口再转换成对象吗?好像用强制转换是不对的
S superatom Unregistered / Unconfirmed GUEST, unregistred user! 2003-08-29 #3 最简单的办法就是传一个整数,然后再强制转换就可以了。 例如 var ObjectHandle: Integer; begin ObjectHandle := Integer(Obj); .... end; var aObj: TMyObj; begin aObj = TMyObj(ObjectHandle); .... end;
最简单的办法就是传一个整数,然后再强制转换就可以了。 例如 var ObjectHandle: Integer; begin ObjectHandle := Integer(Obj); .... end; var aObj: TMyObj; begin aObj = TMyObj(ObjectHandle); .... end;
S softdeveloper Unregistered / Unconfirmed GUEST, unregistred user! 2003-08-29 #4 老大,外部传入的是接口耶!在COM外面没有对象啊[]
S superatom Unregistered / Unconfirmed GUEST, unregistred user! 2003-08-30 #6 不是再让你传一个整数吗? 如: myobj = Tmyobj.create; myintf = myobj as Imyintf; 就是把myobj先记下来,然后把它转换成整数传进去。 如果这个传进去的接口不是你自己创建的那就没办法了。
不是再让你传一个整数吗? 如: myobj = Tmyobj.create; myintf = myobj as Imyintf; 就是把myobj先记下来,然后把它转换成整数传进去。 如果这个传进去的接口不是你自己创建的那就没办法了。
J Jedei Unregistered / Unconfirmed GUEST, unregistred user! 2003-08-31 #7 如果COM是In-process的那么可以把对象强制转换成Integer,然后在COM里再把Integer强制转换成对象 注意:COM对象的方法的参数必须是Integer,而不能是Interface,否则你把一个对象转换成Interface后再转回对象是不行的。因为DELPHI里Interface只是对象的一个子集或者说是属性。
如果COM是In-process的那么可以把对象强制转换成Integer,然后在COM里再把Integer强制转换成对象 注意:COM对象的方法的参数必须是Integer,而不能是Interface,否则你把一个对象转换成Interface后再转回对象是不行的。因为DELPHI里Interface只是对象的一个子集或者说是属性。
Z zjan521 Unregistered / Unconfirmed GUEST, unregistred user! 2003-09-02 #8 定义一个内部的接口,在每个对象上实现该接口,并且这个接口对外部不提供资料 IInternalGetObject = Interface(IInterface) Function _GetObject: TObject; end;
定义一个内部的接口,在每个对象上实现该接口,并且这个接口对外部不提供资料 IInternalGetObject = Interface(IInterface) Function _GetObject: TObject; end;