版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1delphi編寫調(diào)用有窗體有返回值的編寫調(diào)用有窗體有返回值的dll的實現(xiàn)方法的實現(xiàn)方法本人使用的本人使用的delphi是5.0版,用版,用delphi編寫編寫dll工程很簡單,在新建。工程很簡單,在新建。。中就有創(chuàng)建。中就有創(chuàng)建Dll的選的選項。在編寫項。在編寫DLL工程時,需要注意的包括,工程單元有很大差異,一個關鍵字是工程時,需要注意的包括,工程單元有很大差異,一個關鍵字是program,一個關鍵字是,一個關鍵字是library。
2、dll工程單元中還包括工程單元中還包括expts子句,那些需要提供給其他主叫程子句,那些需要提供給其他主叫程序調(diào)用的過程,都需要包括在序調(diào)用的過程,都需要包括在expts中(只是列出函數(shù)的名字,不需要參數(shù)表)中(只是列出函數(shù)的名字,不需要參數(shù)表)。對于主。對于主叫方(調(diào)用叫方(調(diào)用dll的應用程序或者其他的應用程序或者其他dll),則需要在調(diào)用之前進行外部聲明,即,則需要在調(diào)用之前進行外部聲明,即external保留字指示的聲明。留字指
3、示的聲明。另外需要了解另外需要了解objectpal中有關調(diào)用協(xié)議的內(nèi)容,在中有關調(diào)用協(xié)議的內(nèi)容,在objectpal中對于過程或函數(shù)有以中對于過程或函數(shù)有以下五種調(diào)用協(xié)議:下五種調(diào)用協(xié)議:指示字指示字參數(shù)傳遞順序參數(shù)傳遞順序參數(shù)清除者參數(shù)清除者參數(shù)是否使用寄存器參數(shù)是否使用寄存器register自左向右自左向右被調(diào)例程被調(diào)例程是pal自左向右自左向右被調(diào)例程被調(diào)例程否cdecl自右向左自右向左調(diào)用者調(diào)用者否stdcall自右向左自右向
4、左被調(diào)用例程被調(diào)用例程否safecall自右向左自右向左被調(diào)用例程被調(diào)用例程否這里的指示字就是在聲明函數(shù)或過程時附加在例程標題之后的保留字,默認為這里的指示字就是在聲明函數(shù)或過程時附加在例程標題之后的保留字,默認為register,即,即是唯一使用唯一使用CPU寄存器的參數(shù)傳遞方式,也是傳遞速度最快的方式;寄存器的參數(shù)傳遞方式,也是傳遞速度最快的方式;pal:調(diào)用協(xié)議僅用于向后兼容,即向舊的版本兼容;調(diào)用協(xié)議僅用于向后兼容,即向舊的版本
5、兼容;cdecl:多用于多用于C和C語言編寫的例程,也用于需要由調(diào)用者清除參數(shù)的例程;語言編寫的例程,也用于需要由調(diào)用者清除參數(shù)的例程;stdcall:和safecall主要用于調(diào)用主要用于調(diào)用WindowsAPI函數(shù);其中函數(shù);其中safecall還用于雙重接口。還用于雙重接口?,F(xiàn)在以一個實例來說明一個用現(xiàn)在以一個實例來說明一個用delphi編寫的程序如何調(diào)用包含編寫的程序如何調(diào)用包含fm窗體窗體dll的程序。的程序。Dll工程:工程
6、:libraryProject2ImptantnoteaboutDLLmemymanagement:ShareMemmustbethefirstunitinyourlibrarysUSESclauseyourprojects(ProjectViewSource)USESclauseifyourDLLexptsanyproceduresfunctionsthatpassstringsasparametersfunctionresults.
7、ThisappliestoallstringspassedtofromyourDLLeventhosethatarenestedinrecdsclasses.ShareMemistheinterfaceunittotheBLNDMM.DLLsharedmemymanagerwhichmustbedeployedalongwithyourDLL.ToavoidusingBLNDMM.DLLpassstringinfmationusingP
8、ShtStringparameters.usesSysUtilsClassesUnit1inUnit1.pasFm1$R.RESexptsExecutenameExecute過程來自于過程來自于Unit1beginend.——————————————————————————————————————unitUnit1interfaceuses3——————————————————————————————————unitUbtninterf
9、aceusesWindowsMessagesSysUtilsClassesGraphicsControlsFmsDialogsStdCtrlsDbADODBtypeTFm1=class(TFm)adocon:TADOConnectionButton1:TButtonprocedureButton1Click(Sender:TObject)privatePrivatedeclarationspublicPublicdeclarations
10、endfunctionExecute(ApplicHle:TApplicationMainHle:THleAdoObj:TADOConnectionAdoConnectionString:P):booleanstdcallexternalProject2.dllvarFm1:TFm1implementation$R.DFMprocedureTFm1.Button1Click(Sender:TObject)beginexecute(app
11、licationapplication.HleadoconP(adocon.ConnectionString))endend.PB的主程序調(diào)用的主程序調(diào)用DELPHI的DLL,DLL在函數(shù)執(zhí)行完后回傳一個字符串給在函數(shù)執(zhí)行完后回傳一個字符串給PB主程序,主程序,DLL里用的是里用的是P類型。類型。。PB下該怎么接收?下該怎么接收?intRCSectID=15i=1ReadStr[64]intli_data[64]ls_data[64]s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 求下面函數(shù)的返回值微軟
- 調(diào)用未知dll中的導出函數(shù)
- [java]使用jni技術實現(xiàn)java程序調(diào)用dll
- 有顏值的火鍋
- 新樂 有顏值的董事長打造的有顏值塞北超市
- 調(diào)用返回風格.docx
- 編寫教案要講求格式,有眉有目,結構完美
- 紙箱設計軟件中Delphi動態(tài)鏈接庫(DLL)的實現(xiàn).pdf
- 2 調(diào)用返回風格.rar
- 2 調(diào)用返回風格.rar
- 客戶端調(diào)用dll接口說明
- 總結vs2010調(diào)用lib,和dll
- 做有覺悟、有本領、有作用的共產(chǎn)黨員1
- 如何用vc++創(chuàng)建及調(diào)用dll
- 有哲理的句子1
- 調(diào)用返回風格n皇后問題.docx
- 在易語言中調(diào)用dll使用說明
- 鉗工試卷1(有答案的)
- callablestatement調(diào)用oracle存儲過程返回結果集(resultset)
- 有豆?jié){機的朋友看看吧絕對值!
評論
0/150
提交評論