——此文章摘自《Delphi 數據庫開發經典案例解析》定價
¥
特價
¥
購買>>
在前面的章節中無論我們的程序是多文檔還是多窗口結構使用到的窗體都是預先定義好並在編寫程序時就加載到了工程文件之中的在這裡我們將要用到DLLDLL是DynamicLink Libraries(動態鏈接庫)的縮寫它包含代碼數據和資源可以被其他程序共享使用DLL應用程序能夠在程序運行期間動態地調入代碼而不是在編譯期間靜態地鏈接代碼可以認為DLL和EXE基本上是一回事只是DLL不能直接執行而必須由應用程序或者其他DLL調用DLL為應用程序間的資源共享提供了方便同時也是多語言混合編程的重要手段由此可見學習使用DLL是Windows程序員必須掌握的一項重要技術
使用DLL從效果上看很像使用單元(Unit)因為程序員可以在一個程序模塊中調用別的Unit中聲明且定義的過程函數甚至變量如果一個程序模塊中用uses語句應用別的Unit那麼編譯程序在編譯該模塊時便會連同被調用的Unit一同編譯並且把編譯後得到的課執行文件連接到本模塊的可執行文件上即編譯後的一個工程Project只有一個可執行文件但是可以包含多個單元的執行代碼當Unit被多個Project所引用則它的執行代碼將會出現在多個Project的可執行代碼中如果多個Project同時運行那麼Unit的代碼會隨著Project多次被調入內存內存資源被多個重復的代碼段所占用既浪費空間又影響程序的允許速度用DLL就可以解決這個問題DLL被某個可project編譯後仍然是獨立的當多個project調用某個dll文件時只有第一個調用dll的project才把DLL的執行代碼調入內存其他的Project並不把Dll調入而是增加其引用次數並與第一個Project一起共享某個DLL的執行代碼
例如在本章中我們將設計一個DLL它本身有一個窗體在外部程序調用它時依靠外部變量輸入的變量來判斷調用數據庫中的哪個表並有一個函數負責返回雙擊某數據欄後該數據欄的內容使用這個DLL我們可以在程序中通過調用它來浏覽財務管理數據庫中的任何一個表並可以通過雙擊來選擇某一欄的內容讀者可以在讀完本節後回顧前面三章中我們如何處理類似的任務例如在第章中進貨單和銷售單對於雙擊選擇商品名稱編號的處理再和本節中的處理方法加以比較就可以看到DLL的巨大作用
至於DLL更深層次的問題不屬於本書的討論范圍這裡不再敘述
在本章中我們用到的DLL非常簡單我們使用它的目的在於向讀者介紹這樣一種方法其功能完全可以單獨建立一個MDI子窗體來替代在以後的章節中我們將越來越多地用到這些高級技術
() 首先重新打開Delphi選擇File | New | Other在彈出的窗口中的New選項卡中選擇DLL Wizard並單擊OK如圖所示將建立一個新的工程
() 將這個新的工程保存為secdpr再新建一個窗體(Form)將其Name屬性改為dllSec並保存該窗體文件為dllFormpas查看工程的代碼可以看到如下程序
library sec;
uses
SysUtils
Classes
//此處是加入工程的unitdllSec是該Unit的Name而dllForm是該Unit保存的文件名
dllForm in dllFormpas {dllSec};
{$R *res}
exports
//這是將要輸出供外部調用的函數
showdllform index ;
begin
end
圖 建立DLL工程文件
() 在新建的Form放置如圖所示的控件
圖 將在dll調用的窗體
該窗體的控件設置如表所示
表 主窗體屬性設置
[] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25025.html