R royhgf Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-16 #1 请问,在三层结构中,为什么我定义远程数据模块的接口方法后,在客户端调用时没有显示这个接口的方法的呢.SocketConnectionZfg.AppServer. 后面就没有显示方法啦?要怎么个做法啊.
L lawler Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-16 #2 这个在客户端是没法显示的,除非你把你服务器端的单元也引用过来,但没这个必要 你就手工指定好了
G gaobangsheng Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-16 #3 呵呵,這個是沒法顯示的,你只是照著服務器端的接口寫上去,不會報錯的。不過參數一定要正確。還有就是服務器端接口方法一定不能有錯,因為這個也不好測試!
L liangyabinqiuzh Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-16 #4 自己写个方法和服务段方法名相同,不就行了
A aabbcc250 Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-16 #5 你的客户端Project中要 uses 中间层模块Project生成的*_TLB.pas文件,其中包含了你的组件类接口的定义,假设为:IMyRemoteDataModule = interface(IAppServer)。 客户端调用时,可以这样:IMyRemoteDataModule(SocketConnection1.GetServer).,这样就可以自动显出你在IMyRemoteDataModule接口中自定义的属性和方法了。 如果这样: var AppObj: Variant; begin AppObj := SocketConnection1.AppServer; AppObj. //这种方式就不能自动显出你自定义的属性和方法 end; Delphi向导生成的远程数据模块组件,都是支持双接口的,即在定义了IMyRemoteDataModule接口之外,会自动定义一个IMyRemoteDataModuleDisp接口。后者支持方法的动态绑定(晚绑定),可支持VB等脚本语言的调用,灵活性高,但执行速度慢,编辑时不支持代码自动完成;前者是编译时绑定,执行速度快,编辑时支持代码自动完成。
你的客户端Project中要 uses 中间层模块Project生成的*_TLB.pas文件,其中包含了你的组件类接口的定义,假设为:IMyRemoteDataModule = interface(IAppServer)。 客户端调用时,可以这样:IMyRemoteDataModule(SocketConnection1.GetServer).,这样就可以自动显出你在IMyRemoteDataModule接口中自定义的属性和方法了。 如果这样: var AppObj: Variant; begin AppObj := SocketConnection1.AppServer; AppObj. //这种方式就不能自动显出你自定义的属性和方法 end; Delphi向导生成的远程数据模块组件,都是支持双接口的,即在定义了IMyRemoteDataModule接口之外,会自动定义一个IMyRemoteDataModuleDisp接口。后者支持方法的动态绑定(晚绑定),可支持VB等脚本语言的调用,灵活性高,但执行速度慢,编辑时不支持代码自动完成;前者是编译时绑定,执行速度快,编辑时支持代码自动完成。