首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 動態連結庫程式設計(二)完結篇:窗體重用與跨語言呼叫實戰

     編輯:Delphi

動態連結庫(DLL)不僅能封裝函式,更是 Delphi 實現窗體重用的強大載體。將設計完善的通用窗體(如登入對話框、設定視窗)打包進 DLL,即可讓 Delphi、C++、Visual Basic 等異構應用程式共同呼叫,極大提升程式碼復用率與跨語言互通性。

10.4.2 窗體重用實戰:密碼設定與驗證 DLL

本範例建立 PassForm.dll,內含兩個窗體:TSetPassWordForm(密碼設定)與 TGetPasswordForm(密碼驗證),並匯出 SetPassWord、GetPassword 兩個函式供外部呼叫。

Delphi 應用程式呼叫

// 介面宣告(置於 implementation 區)
function GetPassword(Password: PChar): Boolean; far; external 'c:\dlls\PassForm';
function SetPassword(PassWord: PChar): Boolean; far; external 'c:\dlls\PassForm';

// 設定密碼
procedure TForm1.SetButtonClick(Sender: TObject);
begin
  PassWord := StrAlloc(40);
  if not SetPassWord(PassWord) then
    MessageDlg('PassWord is not set', mtInformation, [mbOK], 0);
end;

// 驗證密碼
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 Welcome!'
  else
    Label1.Caption := 'Sorry, You are Invalid User.';
end;

Visual Basic 6.0 呼叫(驗證跨語言通用性)

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 Sub

VB 透過標準 API 呼叫約定即可無縫使用 Delphi 產出的 DLL,證明了窗體重用機制的跨平台價值。

10.4.3 總結與展望

Delphi 在 DLL 開發上展現卓越優勢:

  • 窗體重用機制是對傳統 Windows DLL 程式設計的重大改良,讓視覺化元件跨語言共享成為現實。
  • 單一 DLL 可容納多個窗體,共享約 100KB 的元件庫開銷,極大降低部署成本。
  • DLL 成為保護歷史資產、構建個人/團隊程式模組庫的基石,支援漸進式系統建構。

善用 DLL 窗體重用,不僅能統一企業級應用的視覺風格與業務邏輯,更能打破開發工具壁壘,實現真正的元件級復用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved