我用socket做的一个三层架构的程序.中间层和客户端都连好了.可以在客户端通过ClientDataSet组件的进行一些SQL语句的操作.但是如果在客户端调用中间层上定义的函数,就会出错,就算这个函数不带一个参数也会出错.请问一下高手们如何解决啊!我对三层不精!请帮帮忙!出现在运行期的错误为:invalid variant operation! 

解决方案 »

  1.   

    我在服务器端定义了这么个过程,是protected类型的。
    procedure TDM.AddUsers;
    begin
      iUserNum:=iUserNum + 1;
      FReportServer.StatusBar1.Panels[1].Text:='连接用户个数'+ inttostr(iUserNum);
    end;
    其他没有什么特别的。
    客户端是这样调用的:
    SocketConnection.AppServer.addusers;不知道是不是我在哪个地方没有设置还是怎么的?我从来没有成功过。
      

  2.   

    看来你是用COM+对像了 也用Soctket 返回对像 函数都封装在对像中
      

  3.   

    不懂啊,我的函数是在TRemoteDataModule类中的。通过TRemoteDataModule 连接客户端啊,不知道哪错了。
      

  4.   

    你在TRemoteDataModule类中定义的方法不能由客户端调用。必须是在服务器端的type library中定义的方法才可能由客户端调用。打开服务器的工程,选择view菜单下的type library,在你的接口IDM下增加一个方法(type library窗口中最上面小图标栏New Method),定义这个方法的名称和参数后,点击上面的刷新按钮,你定义的方法的框架就会在.pas文件中显示出来,完成这个方法,编译并执行一下服务器程序,然后在客户端就可以用你写得方法调用刚才定义的服务器方法了