黄色在线观看视频-黄色在线免费看-黄色在线视频免费-黄色在线视频免费看-免费啪啪网-免费啪啪网站

首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平
駕駛員 | 網絡編輯
衛生資格 | 執業醫師 | 執業藥師 | 執業護士
會計從業資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師
質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師
城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > Delphi > 復習資料 > 正文

2011計算機等級考試Delphi講義:動態鏈接庫編程

來源:考試吧Exam8.com) 2010-10-27 15:08:06 考試吧:中國教育培訓第一門戶 模擬考場
本章主要介紹Windows的動態鏈接庫原理、DLLs的編寫和調用、利用DLLs實現數據傳輸、利用DLLs實現窗體重用。

  口令成功設置,把PassWord的值拷貝給PWord輸出,并返回True。應該注意的是由于 PWord本身就是指針類型,指向一個字符串的地址,因而雖然PWord用于輸出,但在參數表中仍為傳值參數,而不是傳址參數。另外調用函數StrCopy,要求PWord在傳入前已分配內存,否則會導致一個一般保護錯。try...finally用于保護窗口所占用內存資源在任何情況下都能正常釋放,讀者可參看第十二章。

  在口令設置窗口中,為了確保用戶記住了設置的口令,在用戶輸入并按回車鍵后,要求用戶再次輸入進行確認。只有用戶重新輸入的字符串與原設置口令相同,口令設置窗口才能正常關閉 。否則將原設置口令清空,要求用戶再次輸入。以上功能的實現在編輯框的OnKeyPress事件處理過程中。

  procedure TSetPassWordForm.Edit1KeyPress(Sender: TObject; var Key: Char);

  begin

  if Edit1.text = '' then Exit;

  if Key = #13 then

  begin

  if Verified then

  if StrPas(PassWord) = Edit1.text then

  begin

  OKBtn.Enabled := True;

  Edit1.Enabled := False;

  OKBtn.SetFocus;

  end

  else

  begin

  Verified := False;

  MessageDlg('PassWord is InValid.',mtWarning,[mbOK],0);

  Edit1.text := '';

  PassWord := '';

  Label1.Caption := 'Please Input PassWord:';

  end

  else

  begin

  Verified := True;

  StrPCopy(PassWord,Edit1.text);

  Edit1.text := '';

  Label1.caption := 'Please Verify PassWord:';

  end;

  Key := #0;

  end;

  end;

  口令檢查窗口的實現相對簡單,只定義了一個輸出函數GetPassWord,用于生成口令檢查窗口并返回口令檢查的結果。

  function GetPassword(Password: PChar): Boolean;

  var

  GetPasswordForm: TGetPasswordForm;

  begin

  Result := False;

  GetPasswordForm := TGetPasswordForm.Create(Application);

  try

  with GetPasswordForm do

  if ShowModal = mrOK then

  if UpperCase(Edit1.Text) <> StrPas(StrUpper(Password)) then

  MessageDlg('Invalid Password', mtWarning, [mbOK], 0)

  else

  Result := True;

  finally

  PasswordForm.Free;

  end;

  end;

  PassWord為輸入的參數,不能為空,由調用以上函數的程序負責維護。

  窗口中用戶輸入口令時回顯在屏幕上的字符由編輯框的PassWordChar屬性確定。

  在DLLs的工程文件中,把兩個輸出函數寫到exports子句中。

  library PassForm;

  uses

  GetPass in 'GETPASS.PAS' {PasswordForm},

  Setpass in 'SETPASS.PAS' {SetPassWordForm};

  exports

  GetPassword,SetPassWord;

  begin

  end.

  10.4.2.2 Delphi應用程序調用重用窗體

  在Delphi應用程序中調用重用窗體,首先必須包含passform.dll的兩個輸出函數:

  function GetPassword(Password: PChar): Boolean;

  far; external 'c:\dlls\PassForm';

  function SetPassword(PassWord: PChar): Boolean;

  far; external 'c:\dlls\PassForm';

  這位于程序單元的implementation部分。

  口令設置部分的實現代碼為:

  procedure TForm1.SetButtonClick(Sender: TObject);

  begin

  PassWord := StrAlloc(40);

  if SetPassWord(PassWord) = False then

  MessageDlg('PassWord is not set',mtInformation,[mbOK],0);

  end;

  首先為口令字符串分配內存。當口令設置窗體按Cancel按鈕取消時,顯示相應的信息。

  口令檢查部分的實現代碼為:

  procedure TForm1.TestButtonClick(Sender: TObject);

  begin

  if PassWord = nil then

  begin

  MessageDlg('Set password first', mtInformation, [mbOK], 0);

  SetButton.SetFocus;

  Exit;

  end;

  if GetPassword(PassWord) then

  Label1.Caption := 'You are Wellcome !'

  else

  Label1.Caption := 'Sorry,You are InValid User.';

  end;

  根據口令檢查的結果,在標簽框中顯示相應的信息。

  10.4.2.3 VB應用程序調用重用窗體

  VB是微軟公司極力推薦的一個可視化開發工具。它雖然并不支持動態鏈接庫的創建,但可以調用標準的Windows API動態鏈接庫和用其它語言編寫的動態鏈接庫。為了驗證所生成DLLs的普適性,我們用VB開發了一個簡單的程序來調用passform.dll中儲存的窗體。

  下面是VB程序的完整代碼,和Delphi程序的對應部分基本一致。

  Option Explicit

  Declare Function GetPassWord Lib "c:\dlls\passform.dll" (ByVal PassWord As String) As Integer

  Declare Function SetPassWord Lib "c:\dlls\passform.dll" (ByVal PassWord As String) As Integer

  Dim PassWord As String * 40

  Sub Check_Click ()

  If PassWord = "" Then

  MsgBox ("Enter sample password first")

  SetPass.SetFocus

  Else

  If GetPassWord(PassWord) Then

  StatusLbl.Caption = "You are Welcome!"

  Else

  StatusLbl.Caption = "Sorry,You are Invalid User."

  End If

  End If

  End Sub

  Sub SetPass_Click ()

  If SetPassWord(PassWord) = 0 Then

  MsgBox ("PassWord is not Set.")

  End If

  End Sub

  有關VB編程的一些具體問題,讀者可參看有關的VB參考書。

  10.4.3 小結

  本章我們討論的是動態鏈接庫編程。許多可視化開發工具(如Visual Basic)不支持 DLLs的創建,而Delphi在這里又有上乘的表現。特別是窗體重用機制是Delphi對Windows下DLLs編程的一個重大改進。在一般的DLLs編程中也體現了Delphi快捷、方便的特點。動態鏈接庫是 Windows下程序組織的一種重要方式,使用動態鏈接庫可以極大地保護用戶在不同開發工具、不同時期所做的工作。利用動態鏈接庫,用戶可以逐步去構筑自己的程序模塊庫,為今后的工作積累素材。

上一頁  1 2 3 4 5  下一頁
  相關推薦:2010年9月計算機等級考試試題及答案解析專題
       預告:名師解析2010年9月計算機等級考試試題答案
       2010年9月計算機等級考試成績查詢時間及入口
       2010年9月計算機等考成績查詢短信免費提醒開通
文章搜索
版權聲明:如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯系800@exam8.com,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
主站蜘蛛池模板: 婷婷黄色网| 日日插日日操 | 欧美视频一区在线观看 | 欧美日韩在线第一页 | 免费人成视网站在线不卡 | 58av国产精品 | 在线精品小视频 | 亚洲欧洲尹人香蕉综合 | 天堂中文字幕在线 | 午夜影院91 | 国产片一级aaa毛片视频 | 欧美大黄视频 | 美女视频ww8888网网 | 人人艹人人爽 | 看黄网站在线播放 | 久久天天干| 黄色片在线观看免费 | 亚州黄色 | 日韩成人精品日本亚洲 | 在线观看成人 | 成年男女免费视频网站播放 | 国产一区二区三区在线 | 波多野结衣啪啪 | 一级黄色大片免费 | 久久久免费的精品 | 中文字幕在线观看免费视频 | 色视影视 | 一级片aaaa | 日韩综合网 | 成年视频免费 | a级黄色免费 | 欧美成人aⅴ | 草视频在线 | 日韩专区在线观看 | 亚洲精品v欧美精品动漫精品 | 国产成人禁片免费观看视频 | 国产成人高清视频免费播放 | caoporm国产精品视频免费 | 男女午夜影院 | 国产欧美日韩专区 | 日日碰夜夜爽 |