解決報錯: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

相關文章
相關標籤/搜索