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

正文內容

第十章動態(tài)鏈接庫編程一-wenkub

2022-09-16 15:29:00 本頁面
 

【正文】 要的區(qū)別有兩點: program關鍵字,而 DLLs工程文件頭標用 library 關鍵字。 uses 子句 。真正的區(qū)別在工程文件上。更令人興奮的是 Delphi 利用 DLLs 實現(xiàn)了窗體的重用機制。所以本章的重點放在編寫和調用用戶自定義的 DLLs 上。 Windows 還提供了針對某一功能的專用 DLLs,如進行 DDE 編程的 ,進 行程序安裝的 等。只包含共享數(shù)據(jù)的 DLLs稱為資源文件。采用這種方法, DLLs 達到了復用代碼的極限。而對于 DLLs,函數(shù)儲存在一個獨立的動態(tài)鏈接庫文件中。動態(tài)鏈接庫就是在這種情況下出現(xiàn)的。這種方法同只把函數(shù)儲存在已編譯的 .OBJ 文件中相比更有利于代碼的重用。 第十章 動態(tài)鏈接庫編程(一) Windows 的動態(tài)鏈接庫原理 動態(tài)鏈接庫 (DLLs)是從 C 語言函數(shù)庫和 Pascal 庫單元的概念發(fā)展而來的。 但隨著 Windows 這樣的多任務環(huán)境的出現(xiàn),函數(shù)庫的方法顯得過于累贅。動態(tài)鏈接庫不用重復編譯或鏈接,一旦裝入內存, Dlls 函數(shù)可以被系統(tǒng)中的任何正在運行的應用程序軟件所使用,而不必再將 DLLs 函數(shù)的另一拷貝裝入內存。在創(chuàng)建 Windows程序時,鏈接過程并不把 DLLs文件鏈接到程序上。 動態(tài)鏈接庫的另一個方便之處是對動態(tài)鏈接庫中函數(shù)的修改可以自動傳播到所有調用它的程序中,而不必對程序作任何改動或處理。如 Windows 的字體文件等。 雖然在編寫 Windows 程序時必然要涉及到 DLLs,但利用 Delphi ,用戶在大部分時候并不會注意到這一點。 使用傳統(tǒng)的 Windows 編程方法來創(chuàng)建和使用一個 DLLs 是一件很 令人頭痛的事,正如傳統(tǒng)的 Windows 編程方法本身就令人生畏一樣。用戶可以將自己設計好的窗體儲存在一個 DLLs 中,在需要的時候可隨時調用它。 在絕大多數(shù)情況下,用戶幾乎意識不到工程文件的存在,因為它一般不顯示在屏幕上。 程序體 而 DLLs 工程文件的格式為: library 工程標題 。不同的關鍵字通知編譯器生成不同的可執(zhí)行文件。 這一節(jié)我們只討論完成一般功能的 DLLs,其它內容將在后邊的兩節(jié)中討論。如果過程、函數(shù)準備供其它應用程序調用,則在過程、函數(shù)頭后加上 export 編譯指示; exports 子句,包含供其它應用程序調用的函數(shù)和過程名。 name 后面接一個字符串常量,作為該過程或函數(shù)的輸出名。 Index 指示為過程或函數(shù)分配一個順序號。 使用 resident,則當 DLLs 裝入時特定的輸出信息始終保持在內存中。 DLLs 中的變量和段 一個 DLLs 擁有自己的數(shù)據(jù)段 (DS),因而它聲明的任何變量都為自己所私有。 一個 DLLs 沒有自己的堆棧段 (SS),它使用調用它的應用程序的堆棧。需注意的是如果讀者想嵌入?yún)R編語言代碼,絕不要使 SS 和 DS登錄同一個值。對于這個問題,有以下兩種解決方法: DLL 卸出內存; Windows,而后重新啟動,運行相應的程序。在 LibMain 中,可以執(zhí)行開鎖 DLL 數(shù)據(jù)段、分配內存、初始化變量等初始化工作;而 WEP 在從內存中移去 DLLs 前被調用,一般用于進行必要的清理工作,如釋放內存等。一些必要的工作(如開鎖數(shù)據(jù)段)可以由系統(tǒng)自動完成。 DLLs 退出時的執(zhí)行過程。 下邊的一段程序包含一個退出過程和一段初始化代碼,用來說明如何正確設置退出過程。 procedure LibExit。 { 恢復原來的退出過程指針 } end。而在自定義退出過程 LibExit 結束時再把ExitProc 的值恢復。 編寫一般 DLLs 的應用舉例 在下面的程序中我們把一個字符串操作的函數(shù)儲存到一個 DLLs 中,以便需要的時候調用它。 {返回字符在字符串中的位置 } function InStr(SourceStr: PChar。 begin Len := strlen(SourceStr)。 Result := 1。 resident。Check : Char)。UseStr39。 若程序只在其中的一部分調用 DLLs 的過程,或者程序使用哪個 DLLs, 調用其中的哪個過程需要根據(jù)程序運行的實際狀態(tài)來判斷,那么使用動態(tài)調用就是一個很好的選擇。這可以使用 far 過程指示或一個 {$F +}編譯指示。 LibFileName 指定了要裝載 DLLs 的文件名,如果 LibFileName 沒有包含一個路徑,則 Windows 按下述順序進行查找: (1)當前目錄; (2)Windows 目錄 (包含 的目錄 )。 如果函數(shù)執(zhí)行成功,則返回裝載庫模塊的實例句柄。文件必須被解壓后才能被裝裁 20 動態(tài)鏈接庫文件非法 21 應用程序需要 32 位擴 展 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 假如在應用程序用 Loadlibrary 調用某一模塊前,其它應用程序已把該模塊裝入內存,則 Lo
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1