我遇到这个问题是在delphi6当中,服务端使用了RemoteDataModule模块,客户端使用TSocketConnection和TWebConnection来连接服务端,并且使用服务端定义的method(即function)。 出现的问题是,每次运行客户端到调用自己在RemoteDataModule模块中添加的method时会报错: method “***” not supported by automation object 我当时添加method是直接在mainformunit里面加入函数,并且手动在TLB.pas中加入两句声明。 出现错误的原因就是没有在RemoteDataModule模块的TypeLibrary中加入函数的声明,所以TLB中的声明是无效的,因为TLB.pas是系统自动生成的。。。 正确的添加method的方法是打开工程之后,在菜单中的View——Type Library中加入新的method,之后点击刷新的按钮,就会自动更新tlb文件,然后在RemoteDataModule中声明和定义该method。
以下是引用自:http://blog.sina.com.cn/s/blog_4d0bbae30100bu2q.html
Delphi三层结构对自定义远程接口的实现方法 在三层中加入新的远程数据模块RemoteDataModule,会自动产生*.tlb的类型库,可自定义方法或函数
1、必须先在服务器程序的typr lib中加入该函数,并定义好输入、输出变量,相应的修改会自动反应在RemoteDataModule和lib文件中;否则,在调用的时候会出现“methon "函数名" not supported by automation object”。究其原因,远程数据模块其实相当于我们自定义的一个类,只不过由系统自动生成罢了,在调用的时候,如果将方法及其输入输出在类库中定义,则找不到该方法,就会出现无法调用的现象。
2、在RemoteDataModule找到要定义的函数,在那里实现自己的逻辑。
3、必须把datasetprovider的PoAllowCommandText:=true.否则,你在客户端无法使用lientdataset.commandtext属性了!这样你就可以在客户端调用socketconnection1.appserver..ExecSqls了,注意参数类型必须一致,字符串用widestring!!!!
4、不能运行三层客户端的自定义解决: regsvr32 midas.dll ; install mdac