服务器端:一。定义的接口unit U_Iface;interfaceuses   Windows, Messages, SysUtils, Variants,ComObj;type
   Iface=interface
   ['{CBE6FFE7-AF31-417D-AEE7-799593FB8ADB}']
    function TestOut(const Sql: WideString): Integer; safecall;end;implementationend.二。类实现接口unit U_IIface;interfaceuses Windows, Messages, SysUtils, Variants,ComObj,U_Iface,Dialogs;type
    IIface=class(TinterfacedObject,Iface)
    private    protected
    public
   function TestOut(const Sql: WideString): Integer; safecall;
end;implementation
function IIface.TestOut(const Sql: WideString): Integer;begin
    Result:=1;
    //ShowMessage('OK');
end;
end.三。客户端调用
 sql:='123';
 DM.DCOMConnection1.Connected:=true; DM.DCOMConnection1.AppServer.TestOut(sql);像我上面那样写为什么会报灾难性故障呢?

解决方案 »

  1.   

    估计是ADO报出来的,不是接口的问题
      

  2.   

    ADO? 我把ADO控件都放在DataMoudle上的,把DataSetProvider放在RemoteDataModule上的,和这个有关系吗?
      

  3.   


    RemoteDataModule调用接口Ifacetype
      TPFunds = class(TRemoteDataModule, IPFunds)
        DataSetProvider1: TDataSetProvider;
        procedure RemoteDataModuleCreate(Sender: TObject);
      private
      Iface:Iface;end;implementationuses U_IIface;function TPFunds.TestOut(const Sql: WideString): Integer;
    begin
     Result:=Iface.TestOut(Sql);
    end;procedure TPFunds.RemoteDataModuleCreate(Sender: TObject);
    begin
      Iface:= TIface.create;
    end;end.