我的DCOM连接到了远程的模块里的一个方法,但是我如何调用远程模块的这个方法呢?
DCOM1.AppServer.方法 可以调用吗?我调用的时候老是在些处报错,说'.'处有错误,到底是怎么回事呢?

解决方案 »

  1.   

    DCOM  单元中加个 datamodule 
    ,在datamodule 里放一个 dcomconnection ,在通过dcomconnection 的appserver 调用你要的方法
      

  2.   

    你这是在COM组件里调用远程数据模块的方法, 得通过DataProvider的IAppServer接口, 通过此接口来调用它的方法才行呀
      

  3.   

    以上所说的我都知道,并且用的也对,可是他还是报错,不明白?我用的方法是Login(const UserName, Password, UsedModel: WideString); safecall;调用方法是cDM.dcnn.appServer.Login(edtUser,edtPwd,'登录模块')。我确信我的SQL语句没有错,我用的数据库驱动是ADO,数据集是ADOQUERY。上面的edtUser,edtPwd分别是客户端的登录TEDIT,请教了!
      

  4.   

    DCOM  单元中加个 datamodule ,在datamodule 里放一个 dcomconnection ,在通过dcomconnection 的appserver 调用你要的方法.
    就是这种方法呀
    我觉得还是你的程序有问题,你再仔细检查检查,也许就能解决呢。
      

  5.   

    你说的DCOM是不是自己的一个DCOM组件,还是DCOMConnection组件啊, 说实在我不明白的问题!提示两点:
      1. 在远程模块中或自己的建立的COM组件,增加方法时, 要在类型库中加, 不要自己直接加
      2. 使用远程模块中组件的方法必须要CreateRemote,取得接口后,通过接口用,没问题的
      

  6.   

    楼上的实在不好意思。DCOM是一个DCOMConnection组件。
    你说的第一点我也不是很清楚,不过我加自己写的方法是在VIEW->的TYPE LIBRARY里加的。第二点我也不明白,我是一个三层的程序,我的服务器端己经在客户端注册过了还要CREAT什么呢?还有如何取的接口呢?我都有点晕!
      
     
      

  7.   

    在你要用这个方法的时候:Var
      pInterface:IEasyDCOMServer;
    begin
      pInterface := CoEasyDCOMServer.CreateRemote('MachineName')
      pInterface. Method.
    end;注意, 要包含RemoteDM_TLB文件.
      

  8.   

    记住CoEasyDCOMServer这个类为远程数据模块(其实它是COM组件,自己定义时也是一样)提供了两个函数用来创建本地或远程模块的接口,有了接口就如鱼得水了,结账吧,老大!
      

  9.   

    是不是DCOM注册问题?再不行的话干脆用Sockconnect吧,连注册都省了
      

  10.   

    检查一下你的SQL语句吧,可能有错呢
      

  11.   

    TO:回复人: IFindit(寻找其中的乐趣),你所说的和我的也是一样的,我只不过是在客户端注册,并且我现在也己经注册了。你用的方法与我的dcnnLogin.AppServer.Login('011'+RightStr(trim(edtID.Text),5), trim(edtPSW.Text),'CS-MIS系统用户登录模块');这个有什么不同呢?不明白?????
      

  12.   

    dcnnLogin这个是接口吗? 如果是在哪创建的? 我的接口是这样来的
    pInterface := CoEasyDCOMServer.CreateRemote('MachineName')
      你的呢?DCOM1.AppServer.方法
    dcnnLogin.AppServer.Login  这两句都是你说的吧!DCOM1是什么是一个DCOMConnection组件的变量名吗? 那AppServer是什么?DCOMConnection组件里没有这个属性吧dcnnLogin是什么?你糊里糊涂地问,大家糊里糊涂地答!有什么效果呀,以后把你的问题描述清楚好不好?
      

  13.   

    不是吧,楼上的,我好像没有怎么得罪你呀?不致于吧!我好像说过我是一个分层的系统呀?DCOM1.AppServer.方法和我说的dcnnLogin.AppServer.Login有什么区别吗?我不认为呀?如果你做过多层系统的时候,AppServer你应该知道的吧?我的第一种说法没有什么矛盾吧!我都说了是调用远程数据模块的自定义的方法啦,是你糊涂的,不是吗?
     好了,我们不说了,还是那个问题,我再说一下了,我是多层系统,就是在客户端调用的时候他报错,错误信息如下:第1行:‘.’附近有语法错误。就是指的dcnnLogin.AppServer.Login('011'+RightStr(trim(edtID.Text),5), trim(edtPSW.Text),'CS-MIS系统用户登录模块');这句,请指点是什么原因呢?
      

  14.   

    我明白你的问题了,你是想通过connection组件中的appserver属性来访问其中应用服务器中自己的login方法了,哦,明白了,那你是用的早榜定还是晚榜定呀?
      

  15.   

    既然你已经注册过了,那么要在把你的接口强制转换一下with DCOM1.AppServer as IYourAppServer do
      Login('011'+RightStr(trim(edtID.Text),5), trim(edtPSW.Text),'CS-MIS系统用户登录模块');
      

  16.   

    还有with DCOM1.AppServer as IYourAppServer do
      Login('011'+RightStr(trim(edtID.Text),5), trim(edtPSW.Text),'CS-MIS系统用户登录模块');中的IYourAppServer是不是我的服务器端的远程数据模块接口呢?客户端不可能有这个的呀?就是说一定会报错说IYourAppServer没有定义的。请细告,这个问题从我接手这个工程到现在还没有解决,有几个月了。
      

  17.   

    DCOM1.AppServer.functionName(参数1,参数2);是可以调用的。
      

  18.   

    可系统老报错,说我的在cDM.dcnn.appServer.Login(edtUser,edtPwd,'登录模块')处,还有'.'有问题,别的处没有点了,只是在APPSERVER后的点时,很可能是在这个地方,救我呀!