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

正文內(nèi)容

第十章 動態(tài)鏈接庫編程(一)-預(yù)覽頁

2024-10-07 15:29 上一頁面

下一頁面
 

【正文】 使用 Index 指示,則由編譯器按順序進(jìn)行分配。這樣當(dāng)其它應(yīng)用程序調(diào)用該過程時,可以比利用名字掃描 DLL 入口降低時間開銷。調(diào)用它的模塊不能直接使用它定義的變量。因此在 DLL 中的過程、函數(shù)絕對不要假定 DS = SS。 DLLs 中的運(yùn)行時間錯和處理 由于 DLLs無法控制應(yīng)用程序的運(yùn)行,導(dǎo)致很難進(jìn)行異常處理,因此編寫 DLLs時要十分小心,以確保被調(diào)用時能正常執(zhí)行 。 同一般的應(yīng)用程序相比, DLL 中運(yùn)行時間錯的處理是很困難的,而造成的后果也更為嚴(yán)重。 Delphi 用自己特有的方式實(shí)現(xiàn)了這兩個標(biāo)準(zhǔn)函數(shù)的功能。所以大部分情況下用戶不會涉及到; 以設(shè)置多個退出過程,退出時按順序依次被調(diào)用; 和 WEP 對用戶透明,由系統(tǒng)自動調(diào)用。 Delphi 有一個預(yù)定義變量 ExitProc 用于指向退出過程的地址。 library Test。 far。 begin {DLL 的初始化工作 } SaveExit := ExitProc。由于 ExitProc 是一個系統(tǒng)全局 變量,所以在結(jié)束時恢復(fù)原來的退出過程是必要的。應(yīng)該注意的一點(diǎn)是:為了保證這個函數(shù)可以被其它語言編寫的程序所調(diào)用,作為參數(shù)傳遞的字符串應(yīng)該是無結(jié)束符的字符數(shù)組類型 (即 PChar類型 ),而不是 Object Pascal 的帶結(jié)束符的 Srting 類型。Ch: Char): Integer。 for i := 0 to Len1 do if SourceStr[i] = ch then begin Result := i。 end。 begin end. 調(diào)用 DLLs 有兩種方法可用于調(diào)用一個儲存在 DLLs 中的過程。 Integer。 使用這種方法,程序無法在運(yùn)行時間里決定 DLLs 的調(diào)用。 使用動態(tài)調(diào)用,即使裝載一個 DLLs 失敗了,程序仍能繼續(xù)運(yùn)行。 Delphi 全部支持傳統(tǒng) Windows 動態(tài)鏈接庫編程中的三種調(diào)用方式,它們是: ● 通過過程 /函數(shù)名 ● 通過過程 /函數(shù)的別名 ● 通過過程 /函數(shù)的順序號 通過過程或函數(shù)的別名調(diào)用,給用戶編程提供了靈活性,而通過順序號(Index)調(diào)用可以提高相應(yīng) DLL的裝載速度。函數(shù) GetWindowDirectory 返回這一目錄的路徑; (3)Windows 系統(tǒng)目錄 (包含系統(tǒng)文件 如 的目錄 )。否則,返回一個小于HINSTANCE_ERROR 的錯誤代碼。 :撿取給定模塊中函數(shù)的地址 語法為: function GetProcAddress(Module: THandle。 ProcName 是指向含有函數(shù)名的以 nil 結(jié)尾的字符串的指針,或者也可以是函數(shù)的次序值。如果用函數(shù)名,則函數(shù)名的拼寫必須與動態(tài)鏈接庫文件 EXPORTS 節(jié)中的對應(yīng)拼寫相一致。這個值由 Loadlibrary 返回。 動態(tài)調(diào)用舉例 對于動態(tài)調(diào)用,我們舉了如下的一個簡單例子?!?,否則顯示信息:“不包含這個字符。 procedure (Sender: TObject。 PFunc: TFarProc。)。Instr39。 Order := TInstr(PFunc)(txt,Key)。位于第 39。 Freelibrary(Moudle)。Check: Char): Integer。這就意味著保存在 DLLs全局變量中的文件和全局內(nèi)存塊變量在 DLLs沒有被通知的 情況下就變?yōu)榉欠ā? 但在特定情況下, DLLs 也可以擁有自己的全局內(nèi)存塊。 利用 DLLs 實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)傳輸 利用 DLLs 實(shí)現(xiàn)應(yīng)用程序間的數(shù)據(jù)傳輸?shù)牟襟E為: 1. 編寫一個 DLLs 程序,其中擁有一個用 gmem_DDEShare 屬性分配的全局內(nèi)存塊; 2. 服務(wù)器程序調(diào)用 DLLs,向全局內(nèi)存塊寫入數(shù)據(jù); 3. 客戶程序調(diào)用 DLLs,從全局內(nèi)存塊讀取數(shù)據(jù)。如: function GetGlobalMem: THandle。 3. 在初始化代碼中分配全局內(nèi)存塊: 程序清單如下: begin hMem := GlobalAlloc(gmem_MOVEABLE and gmem_DDEShare,num)。 end. num 是一個預(yù)定義的常數(shù)。 表 全局內(nèi)存塊的分配標(biāo)志 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 標(biāo) 志 意 義 ————————————————————————————————— gmem_DDEShare 分配可由應(yīng)用程序共享的內(nèi)存 gmem_Discardable 分配可拋棄的內(nèi)存 (只與 gmem_Moveable 連用 ) gmem_Fixed 分配固定內(nèi)存 gmem_Moveable 分配可移動的內(nèi)存 gmem_Nopact 該全局堆中的內(nèi)存不能被壓縮或拋棄 gmem_Nodiscard 該全局堆中的內(nèi)存不能被拋棄 gmem_NOT_Banked 分配不能被分段的內(nèi)存 gmem_Notify 通知功能。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1