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

正文內(nèi)容

第10章其他編程(參考版)

2024-10-21 13:29本頁面
  

【正文】 第 10章 其他編程 調(diào)用 DLL procedure (Send。 //振鈴響 end。])) and (ord(Key)VK_BACK) then //若輸入的非數(shù)字鍵或 ?鍵 begin Key:=0。..39。 begin if (not (Key in [39。 procedure (Sender: TObject。 //Edit事件 begin :=StrToInt((Sender as TEdit).Text)。 end。 第 10章 其他編程 調(diào)用 DLL procedure (Sender: TObject)。 := IntToStr()。 begin for i:=Low(LongMonthNames) to High(LongMonthNames) do (LongMonthNames[i])。 implementation {$R *.dfm} procedure (Sender: TObject)。ACaption:String):TDateTime。 end。 procedure btnOKClick(Sender: TObject)。 procedure EditYearKeyPress(Sender: TObject。 procedure CMBMonthChange(Sender: TObject)。 btnCancel: TBitBtn。 Label2: TLabel。 EditYear: TEdit。 Bevel1: TBevel。 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ComCtrls, Grids, Calendar, Spin, ExtCtrls。 第 10章 其他編程 調(diào)用 DLL 窗體與組件的屬性設(shè)置 第 10章 其他編程 調(diào)用 DLL (4) 在第 3步所建窗體所對應(yīng)的單元文件中輸入程序代碼。ShowCalendar39。{Form1}。 uses SysUtils, Classes,Unit1 in 39。 (2) 在所彈出的代碼編輯窗口中輸入 如下 DLL文件的程序代碼: // 文件名為 。) ; Aptr:=GetProcAddress( Ihnd, 函數(shù)名 ) ; ( 4) 在應(yīng)用程序需要之處調(diào)用 DLL函數(shù): RetVal:=Test( Aptr) ( 實參表 ) ; ( 5) 調(diào)用完后 , 要用 FreeLibrary釋放 DLL占用的內(nèi)存: FreeLibary( Ihnd); 第 10章 其他編程 調(diào)用 DLL 【 例 】 本例創(chuàng)建一個 DLL,文件名為 ,其中包含一個顯示星期的函數(shù) ShowCalendar,再設(shè)計一個主程序以運行時調(diào)用方式調(diào)用該 DLL中的此函數(shù)。 第 10章 其他編程 調(diào)用 DLL ( 3)在調(diào)用 DLL處加入以下的語句進(jìn)行 DLL裝載: Ihnd:=LoadLibrary( 39。 RetVal:類型名 。 設(shè)要調(diào)用的 DLL中包含一個名為 test的函數(shù): function test(參數(shù)表):類型名; stdcall; 運行時調(diào)用 DLL的方法是: ( 1)在調(diào)用該 DLL的應(yīng)用程序的 Type類型聲明處加入如下 定義: type Ttest = function(參數(shù)表):類型名; ( 2)在 Var變量定義部分定義如下變量: VAR Aptr:Ttest。 第 10章 其他編程 調(diào)用 DLL 2. 運行時調(diào)用( Runtime Dynamic Linking) 編譯時并不知道將會調(diào)用 DLL的哪些函數(shù)或過程 。 缺點是如果加載的 DLL不存在或 DLL中沒有要調(diào)用的函數(shù)或過程,應(yīng)用程序就會自動終止運行。DLLName39。 第 10章 其他編程 調(diào)用 DLL 1. 裝載時調(diào)用( Loadtime Dynamic Linking) 在應(yīng)用程序編譯之前已經(jīng)明確知道要調(diào)用 DLL的哪些函數(shù)或過程,在編譯時目標(biāo)文件中只保留必要的鏈接信息; 應(yīng)用程序執(zhí)行時,利用鏈接信息加載 DLL函數(shù)或過程代碼,并在內(nèi)存中將 DLL代碼鏈接到調(diào)用程序的執(zhí)行空間中。 end。 MX:=MaxNum(N1,N2)。 begin N1:=strtoint()。 var N1,N2:integer。MaxNum39。39。stdcall。 var Form1: TForm1。 procedure Button1Click(Sender: TObject)。 Edit3: TEdit。 Edit2: TEdit。 Label3: TLabel。 type 第 10章 其他編程 創(chuàng)建 DLL TForm1 = class(TForm) Label1: TLabel。 第 10章 其他編程 創(chuàng)建 DLL 窗體與組件的屬性設(shè)置 第 10章 其他編程 創(chuàng)建 DLL 主程序?qū)?yīng)的單元文件為 ,其內(nèi)容如下: unit Unit1。 2)調(diào)用 DLL 創(chuàng)建一個應(yīng)用程序調(diào)用 MaxNum函數(shù)。 // 引出求最大值函數(shù) end. 第 10章 其他編程 創(chuàng)建 DLL ( 3)選擇主菜單下的 File?Save命令項,保存該文件名為 。 exports MaxNum name 39。 // 定義求最大值函數(shù) begin if Num1Num2 then result:=Num1 else result:=Num2。 {$R *.res} function MaxNum(Num1,Num2:integer):integer。 ( 2)在所彈出的代碼編輯窗口中輸入 DLL文件的程序代碼,該 DLL的程序代碼如下: 第 10章 其他編程 創(chuàng)建 DLL library Max。 1)創(chuàng)建 ( 1)新建一個 DLL項目。 第 10章 其他編程 創(chuàng)建 DLL 【 例 】 本例創(chuàng)建一個 DLL,文件名為 ,其中包含一個求兩個數(shù)中的大者的函數(shù) MaxNum。 {Form1}。 // 過程與之類似 如在另一個 pas文件中說明和定義的 ,則要在 DLL項目文件中加入以下語句: Uses DllEXP in 39。 在 DLL單元文件( .Pas文件)中加入 DLL的函數(shù)或過程的聲明,形式如下: 函數(shù)名 (參數(shù)表 ):類型名 。函數(shù)引用名 39。 // Project1為創(chuàng)建的項目名 在所創(chuàng)建的項目的 Uses語句中加入 Exports語句,指明使用 DLL的應(yīng)用程序要調(diào)用的函數(shù)或過程名。 5. 便于系統(tǒng)升級 如果需對系統(tǒng)升級,只要將所涉及的 DLL進(jìn)行即可,而不必將 整個系統(tǒng)重新編譯、鏈接,減少了工作量。 3. 實現(xiàn)模塊化 可將程序劃分為多個 DLL模塊,既可以提高模塊化程度,又可以 隱蔽代碼實現(xiàn)細(xì)節(jié) 。 2. 共享代碼、資源和數(shù)據(jù) 把資源組織到 DLL中,就可以讓許多應(yīng)用程序使用,而不必在內(nèi) 存中重復(fù)裝入這些內(nèi)容。 DLL和可執(zhí)行文件( exe)非常類似,但 DLL中包含了可執(zhí)行代碼卻不能單獨執(zhí)行,而應(yīng)由 Windows應(yīng)用程序直接或間接調(diào)用。 大部分 DLL文件的擴展名為 .dll,也有的可能是 .drv(設(shè)備驅(qū)動程序)、 .sys(系統(tǒng)文件)或 .fon(字體文件)。 // 使 ShowResult能在主線程中執(zhí)行 end。 ReleaseMutex(hMutex)。 end。 Inc(next)。 var i:integer。 end。 CloseHandle(hMutex)。 begin inc(tag)。 procedure 。 // 全局變量定義 tag:integer=0。 const SIZE=10。 end。 // 顯示結(jié)果 procedure Execute。 interface uses Windows, SysUtils,Classes。 end。 // 創(chuàng)建互斥量 (False)。 // 聲明互斥量 implementation {$R *.dfm} procedure (Sender: TObject)。 第 10章 其他編程 線程同步 var Form1: TForm1。 procedure Button1Click(Sender: TObject)。 Label1: TLabel。 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Unit2。 ● DwMilliseconds參數(shù)可設(shè)為兩個值: ①當(dāng)值為 0時,函數(shù)將只檢查由 hHandle參數(shù)指定的互斥對象是否處 于發(fā)信號狀態(tài),檢查完畢后函數(shù)立即返回 ②當(dāng)值為 INFINITE時,則函數(shù)將一直等待,直到信號出現(xiàn)為止 ● hHandle參數(shù)指定的互斥對象 ● 返回值有 3種: ① WAIT_ABANDONED,表明指定對象是互斥對象,并且擁有該 互斥對象的線程在未釋放該對象之前就已終止 ② WAIT_OBJECT_0,表明指定的對象處于發(fā)信號狀態(tài) ③ WAIT_TIMEOUT,表明等待的時間已過,對象仍是非發(fā)信號 狀態(tài) 第 10章 其他編程 線程同步 【 例 】 對于臨界區(qū)的例題,使用互斥方式進(jìn)行兩線程的同步,該應(yīng)用程序與臨界區(qū)的例題的差別僅在于線程同步方式不同,其余均相同。 dwMilliseconds:DWORD):DWAORD。當(dāng) 一個線程不需再擁有互斥對象時,應(yīng)調(diào)用 ReleaseMutex()過程。 ● LpName參數(shù)指出互斥對象的名稱 。 ● lpMutexAttibutes參數(shù)為一個指向 TsecurityAttributes記錄的指針,通 常置為 0,表示使用默認(rèn)的安全屬性。lpName:Pchar):Thandle。 (2)創(chuàng)建互斥對象的函數(shù)是 CreateMutex(),其原型為 function CreateMutex(lpMutexAttibutes:PsecurityAttributes。 第 10章 其他編程 線程同步 說明: 在第一個線程調(diào)用了 EnterCriticalSection()之后,其他的線程就不能進(jìn)入臨界區(qū)代碼,它們將睡眠;直到第一個線程調(diào)用LeaveCriticalSection()后,下一個需要進(jìn)入臨界區(qū)的線程才被喚醒。 // 使 ShowResult能在主線程中執(zhí)行 end。 LeaveCriticalSection(CS)。 Sleep(5)。 // 進(jìn)入臨界區(qū) for i:=1 to SIZE do // 為數(shù)組各元素賦
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1