解决报错:method “***” not supported by automation object

我遇到这个问题是在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。html

如下是引用自:http://blog.sina.com.cn/s/blog_4d0bbae30100bu2q.html服务器

Delphi三层结构对自定义远程接口的实现方法 在三层中加入新的远程数据模块RemoteDataModule,会自动产生*.tlb的类型库,可自定义方法或函数app

一、必须先在服务器程序的typr lib中加入该函数,并定义好输入、输出变量,相应的修改会自动反应在RemoteDataModule和lib文件中;不然,在调用的时候会出现“methon "函数名" not supported by automation object”。究其缘由,远程数据模块其实至关于咱们自定义的一个类,只不过由系统自动生成罢了,在调用的时候,若是将方法及其输入输出在类库中定义,则找不到该方法,就会出现没法调用的现象。socket

二、在RemoteDataModule找到要定义的函数,在那里实现本身的逻辑。ide

三、必须把datasetprovider的PoAllowCommandText:=true.不然,你在客户端没法使用lientdataset.commandtext属性了!这样你就能够在客户端调用socketconnection1.appserver..ExecSqls了,注意参数类型必须一致,字符串用widestring!!!!函数

四、不能运行三层客户端的自定义解决: regsvr32 midas.dll ; install mdacorm

相关文章
相关标签/搜索