freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第十章動(dòng)態(tài)鏈接庫(kù)編程一(完整版)

  

【正文】 dows 中動(dòng)態(tài)鏈接庫(kù)的編寫(xiě),需要兩 個(gè)標(biāo)準(zhǔn)函數(shù): LibMain 和 WEP,用于啟動(dòng)和關(guān)閉 DLL。 Delphi 絕不會(huì)產(chǎn)生假定 DS = SS 的代碼, Delphi 的任何運(yùn)行時(shí)間庫(kù)過(guò)程 /函數(shù)也都不作這種假定。例如: exports InStr name MyInStr resident。如果仍利用原來(lái)的名字 (InStr),則在程序執(zhí)行到引用點(diǎn)時(shí)會(huì)引發(fā)一個(gè)系統(tǒng)錯(cuò)誤。 ,此時(shí) library 后跟的庫(kù)名自動(dòng)修改; 、函數(shù)代碼。 程序體 它們主要的區(qū)別有兩點(diǎn): program關(guān)鍵字,而 DLLs工程文件頭標(biāo)用 library 關(guān)鍵字。真正的區(qū)別在工程文件上。所以本章的重點(diǎn)放在編寫(xiě)和調(diào)用用戶自定義的 DLLs 上。只包含共享數(shù)據(jù)的 DLLs稱為資源文件。而對(duì)于 DLLs,函數(shù)儲(chǔ)存在一個(gè)獨(dú)立的動(dòng)態(tài)鏈接庫(kù)文件中。這種方法同只把函數(shù)儲(chǔ)存在已編譯的 .OBJ 文件中相比更有利于代碼的重用。 但隨著 Windows 這樣的多任務(wù)環(huán)境的出現(xiàn),函數(shù)庫(kù)的方法顯得過(guò)于累贅。在創(chuàng)建 Windows程序時(shí),鏈接過(guò)程并不把 DLLs文件鏈接到程序上。如 Windows 的字體文件等。 使用傳統(tǒng)的 Windows 編程方法來(lái)創(chuàng)建和使用一個(gè) DLLs 是一件很 令人頭痛的事,正如傳統(tǒng)的 Windows 編程方法本身就令人生畏一樣。 在絕大多數(shù)情況下,用戶幾乎意識(shí)不到工程文件的存在,因?yàn)樗话悴伙@示在屏幕上。不同的關(guān)鍵字通知編譯器生成不同的可執(zhí)行文件。如果過(guò)程、函數(shù)準(zhǔn)備供其它應(yīng)用程序調(diào)用,則在過(guò)程、函數(shù)頭后加上 export 編譯指示; exports 子句,包含供其它應(yīng)用程序調(diào)用的函數(shù)和過(guò)程名。 Index 指示為過(guò)程或函數(shù)分配一個(gè)順序號(hào)。 DLLs 中的變量和段 一個(gè) DLLs 擁有自己的數(shù)據(jù)段 (DS),因而它聲明的任何變量都為自己所私有。需注意的是如果讀者想嵌入?yún)R編語(yǔ)言代碼,絕不要使 SS 和 DS登錄同一個(gè)值。在 LibMain 中,可以執(zhí)行開(kāi)鎖 DLL 數(shù)據(jù)段、分配內(nèi)存、初始化變量等初始化工作;而 WEP 在從內(nèi)存中移去 DLLs 前被調(diào)用,一般用于進(jìn)行必要的清理工作,如釋放內(nèi)存等。 DLLs 退出時(shí)的執(zhí)行過(guò)程。 procedure LibExit。而在自定義退出過(guò)程 LibExit 結(jié)束時(shí)再把ExitProc 的值恢復(fù)。 {返回字符在字符串中的位置 } function InStr(SourceStr: PChar。 Result := 1。Check : Char)。 若程序只在其中的一部分調(diào)用 DLLs 的過(guò)程,或者程序使用哪個(gè) DLLs, 調(diào)用其中的哪個(gè)過(guò)程需要根據(jù)程序運(yùn)行的實(shí)際狀態(tài)來(lái)判斷,那么使用動(dòng)態(tài)調(diào)用就是一個(gè)很好的選擇。 LibFileName 指定了要裝載 DLLs 的文件名,如果 LibFileName 沒(méi)有包含一個(gè)路徑,則 Windows 按下述順序進(jìn)行查找: (1)當(dāng)前目錄; (2)Windows 目錄 (包含 的目錄 )。文件必須被解壓后才能被裝裁 20 動(dòng)態(tài)鏈接庫(kù)文件非法 21 應(yīng)用程序需要 32 位擴(kuò) 展 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 假如在應(yīng)用程序用 Loadlibrary 調(diào)用某一模塊前,其它應(yīng)用程序已把該模塊裝入內(nèi)存,則 Loadlibrary 并不會(huì)裝載該模塊的另一實(shí)例,而是使該模塊的“引用計(jì)數(shù)”加 1。因此大部分情況下用函數(shù)名是一種更好的選擇。 每調(diào)用一次 Loadlibrary 就應(yīng)調(diào)用一次 FreeLibray,以保證不會(huì)有多余的庫(kù)模塊在應(yīng)用程序結(jié)束后仍留在內(nèi) 存中。 輸入檢查功能的實(shí)現(xiàn)在 Edit2 的 OnKeyPress 事件處理過(guò)程中,程序清單如下。c:\dlls\39。 txt := StrPCopy(txt,)。 end。這樣,當(dāng)應(yīng)用程序中止時(shí),它擁有的打開(kāi)的文件自動(dòng)關(guān)閉,它擁有的全局內(nèi)存塊自動(dòng)釋放。 由 DLLs 管理的全局內(nèi)存塊是應(yīng)用程序間進(jìn)行數(shù)據(jù)傳輸?shù)挠忠煌緩?,下面我們將專門(mén)討論這一問(wèn)題。 end??梢允褂玫姆峙錁?biāo)志如下表所示。當(dāng)該內(nèi)存被拋棄時(shí)調(diào)用 GlobalNotify 函數(shù) gmem_Zeroinit 將所分配內(nèi)存塊的內(nèi)容初 始化為零 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 有兩個(gè)預(yù)定義的常用組合是: GHND = gmem_Moveable and gmem_Zeroinit GPTK = gmem_Fixed and gmem_Zeroinit 第二個(gè)參數(shù)用于設(shè)置欲分配的字節(jié)數(shù)。 if hMem = 0 then MessageDlg(39。 用于實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)?DLLs 的編寫(xiě) 用于實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)?DLLs與一般 DLLs的編寫(xiě)基本相同,其中特別的地方是: 1. 定義一個(gè)全局變量句柄: var hMem: THandle。這將給其它使用該 DLLs 的應(yīng)用程序造成困難。 end。 if Order = 1 then := 39。 if Moudle 32 then begin
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1