程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第十章-動態鏈接庫編程(二)(3)

第十章-動態鏈接庫編程(二)(3)

編輯:Delphi

在口令設置窗口中,為了確保用戶記住了設置的口令,在用戶輸入並按回車鍵後,要求用戶再次輸入進行確認。只有用戶重新輸入的字符串與原設置口令相同,口令設置窗口才能正常關閉 。否則將原設置口令清空,要求用戶再次輸入。以上功能的實現在編輯框的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. 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved