如何在一个MTS对象中的接口函数里调用宁一个对象的接口函数(100分)

  • 主题发起人 主题发起人 kevinhe
  • 开始时间 开始时间
K

kevinhe

Unregistered / Unconfirmed
GUEST, unregistred user!
我作了一个协调对象,一个数据对象和一个客户程序,
1。数据对象中定义了一个接口Fuction DF
2。协调对象中定义了一个接口Fuction CrF
CrF中有对DF的调用
3。当在客户程序中调用CRF时会出现
错误'Variantdo
se not referance an automatic object'
请问如何解决?

 
看错误提示好象是给Varaint变量赋了值,但是调用方法失败。
要调用的Variant方法一定要用接口
 
我的DF和CrF均接口函数
 
大概你的调用部分有错。能不能把代码贴出来?
 
代码非常简单,我只是为了做一个试验:
1。数据对象DO的定义一个接口函数
DF:没有参数,*Viarant返回
function TDOdm.DF: OleVariant;
begin
result := 'OK';
end;
2。协调对象CRO中定义一个MTSDATAMODULE,放置一个DCOMCONNECTION1,定义一个接口函数
DCOMCONNECTION1的SERVERNAME设置为DO
CRF:没有参数,*Viarant返回
function TCROdm.CRF: OleVariant;
begin
result := DCOMConnection1.Appserver.DF;
end;

3。客户程序放置一个DCOMCONNECTION1,定义一个接口函数
DCOMCONNECTION1的SERVERNAME设置为CRO
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := DCOMConnection1.Appserver.CRF;
end;

 
to RAX:
非也,我采用MTS对象,不注册DCOMconnection中更本找不到服务器名,再说
出错信息也不一样。
问题的关键不是客户程序调用远程数据模块中的接口函数,这肯定不会有问题,
而是,在一个远程数据模块中的接口函数调用另一个远程数据模块中的接口函数
出问题。
 
请各位关注本问题
如果觉得太简单可以提出来。
 
最好使用Early-Binding的办法来调用。
即在协调对象的单元中use 数据对象.tlb
然后在协调对象中如此调用:
function TCROdm.CRF: OleVariant;
var
objDodm : ICoDodm;
begin
objDodm := CoCoDodm.Create;
Result := objDodm.DF;
end;
最后在客户端再调用CRF。
如果协调对象和数据对象不在同一台机器上,可能需要用CreateRemote(机器名);
 
多谢!
late binding 还苦了我!
 
后退
顶部