delphi編寫調用有窗體有返回值的dll的實現方1_第1頁
已閱讀1頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1delphi編寫調用有窗體有返回值的編寫調用有窗體有返回值的dll的實現方法的實現方法本人使用的本人使用的delphi是5.0版,用版,用delphi編寫編寫dll工程很簡單,在新建。工程很簡單,在新建。。中就有創(chuàng)建。中就有創(chuàng)建Dll的選的選項。在編寫項。在編寫DLL工程時,需要注意的包括,工程單元有很大差異,一個關鍵字是工程時,需要注意的包括,工程單元有很大差異,一個關鍵字是program,一個關鍵字是,一個關鍵字是library。

2、dll工程單元中還包括工程單元中還包括expts子句,那些需要提供給其他主叫程子句,那些需要提供給其他主叫程序調用的過程,都需要包括在序調用的過程,都需要包括在expts中(只是列出函數的名字,不需要參數表)中(只是列出函數的名字,不需要參數表)。對于主。對于主叫方(調用叫方(調用dll的應用程序或者其他的應用程序或者其他dll),則需要在調用之前進行外部聲明,即,則需要在調用之前進行外部聲明,即external保留字指示的聲明。留字指

3、示的聲明。另外需要了解另外需要了解objectpal中有關調用協議的內容,在中有關調用協議的內容,在objectpal中對于過程或函數有以中對于過程或函數有以下五種調用協議:下五種調用協議:指示字指示字參數傳遞順序參數傳遞順序參數清除者參數清除者參數是否使用寄存器參數是否使用寄存器register自左向右自左向右被調例程被調例程是pal自左向右自左向右被調例程被調例程否cdecl自右向左自右向左調用者調用者否stdcall自右向左自右向

4、左被調用例程被調用例程否safecall自右向左自右向左被調用例程被調用例程否這里的指示字就是在聲明函數或過程時附加在例程標題之后的保留字,默認為這里的指示字就是在聲明函數或過程時附加在例程標題之后的保留字,默認為register,即,即是唯一使用唯一使用CPU寄存器的參數傳遞方式,也是傳遞速度最快的方式;寄存器的參數傳遞方式,也是傳遞速度最快的方式;pal:調用協議僅用于向后兼容,即向舊的版本兼容;調用協議僅用于向后兼容,即向舊的版本

5、兼容;cdecl:多用于多用于C和C語言編寫的例程,也用于需要由調用者清除參數的例程;語言編寫的例程,也用于需要由調用者清除參數的例程;stdcall:和safecall主要用于調用主要用于調用WindowsAPI函數;其中函數;其中safecall還用于雙重接口。還用于雙重接口。現在以一個實例來說明一個用現在以一個實例來說明一個用delphi編寫的程序如何調用包含編寫的程序如何調用包含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的主程序調用的主程序調用DELPHI的DLL,DLL在函數執(zhí)行完后回傳一個字符串給在函數執(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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論