初学delphi三层架构的编写,请教几个小问题:
1。如何用静态联编的方式调用应用服务器上远程数据模块的接口(用DCOM作为传输协议)
  小弟最初用动态联编的方式,成功:
    DCOMConnection1.AppServer.GetDatabaseName;
        //Getdatabasename是我在应用服务器上定义的一个取得所有数据库名的函数
   想改用静态联编,是不是用以下的代码
    With DCOMConnection1.AppServer as ImyAppServer do GetDatabaseName;书上说类型库必须在客户端注册,要调用bin目录下的tregsvr.exe
  不能成功,对书上说的也不太了解,望指点~~~2.我用上面提到的session控件的Getdatabasename的函数取得可连接的所有数据库名,但不知道如何使用session的gettablename的函数。因为getdatabasename函数是不需要只需要加上要赋值的参数就可以了对不对。但是gettablename数使用的参数有很多
procedure GetTableNames(const DatabaseName, Pattern: String; Extensions, SystemTables: Boolean; List: TStrings);
不知道如何设定这个databasename参数,因为在客户端我要选择databasename,它实际是个变量了,望指点~~~~3.再问个简单的
 interface 里的uses和implementation里的uses有什么区别
我的理解是只有在运行期,要使用到implementation中的函数或过程时才加载uses里的东西,是不是这样~~4.last one 也很简单
 由于刚开始学delphi,我要加上某个函数实现某个功能的时候,都是手动的先到type里声明,再到implementation里完成相关的定义。不知道各位大虾是怎么作的。鞠躬~~~(284249,qq)

解决方案 »

  1.   

    我自己先up一下
    大家看了不会也帮我up一下啊,谢拉
      

  2.   

    顶一次,再顶一次也不嫌多拉,再没人来我再顶
    upupup
      

  3.   

    1、你指的“动态联编”其实就是晚期绑定:
    DCOMConnection1.AppServer.GetDatabaseName;
    “静态联编”是早期绑定。
    With DCOMConnection1.AppServer as ImyAppServer do GetDatabaseName;
    你既然引用了接口ImyAppServer,当然首先得将声明这个接口得单元Use。
    “调用bin目录下的tregsvr.exe不能成功”就不清楚了。2、你不会只需要输出参数而不需要输入参数吧。还有TStringList得对应为OleVariant数组。3、我认为区别不大。你的理解我还是第一次听说。4、自定义得函数、过程都得自己写。
      

  4.   

    peter兄,第二个问题能不能给我详细解释一下,如果你来作你会怎么作
    谢了
      

  5.   

    “调用bin目录下的tregsvr.exe不能成功”就不清楚了
    ~~
    你理解错我的话了,我说的是静态联编不能成功,调用那个tregsvr。exe只是不了解有什么用,运行了也没什么反应啊~
      

  6.   

    同意楼上的说法。
    如果Form1 usees uform2,form2 uses uform1,就必须把Uses语句加到implementation中,否则出现循环引用错误。
      

  7.   

    第一个问题~
    我试了,uses接口单元,还是不行
    With DCOMConnection1.AppServer as ImyAppServer do GetDatabaseName中的ImyAppServer 是不是RDM定义时候的那个接口怎么办啊~~我看了两本书都是这么写的《delphi7数据库应用开发》和,黑皮书《delphi数据库应用开发技术与实例》