bpl 包的編寫和引用


轉載:http://www.cnblogs.com/gxch/archive/2011/04/23/bpl.html

為什么要使用包?

答案很簡單:因為包的功能強大。設計期包(design-time package)簡化了自定義組件的發布和安裝;而運行期包(run-time package)則更是給傳統的程序設計注入了新鮮的力量。一旦把可重用的代碼編譯為運行期庫中,你就可以在多個應用程序中共享它們。所有應用程序都可以通過包訪問標准組件,Delphi自己就是這么干的。因為應用程序不必在可執行文件中單獨復制一份組件庫,這樣就大大節省了系統資源和磁盤空間。此外,包還可以減少花費在編譯上的時間,因為你只需編譯應用程序特有的代碼。

如果可以動態的使用包,那么我們還可以獲得更多的好處。包提供了一種新穎的模塊化方法來開發應用程序。有些時候你也許想把某些模塊作為應用程序的可選部件,例如一個記帳系統附帶一個可選的HR模塊。某些情況下,你只需安裝基本的應用程序,而在另外一些情況下你就可能需要額外安裝HR模塊。這種模塊化的方法可以通過包技術很容易的實現。在過去,這只能通過動態裝載DLL實現,但是使用Delphi的包技術,你就可以把應用程序的各個模塊類型分別打“包”成捆。特別是從包中創建的類對象則屬於應用程序所有,因此可以與應用程序中的對象交互。

運行期包與應用程序

許多開發者只把Delphi包看作放組件的地方,事實上包可以(而且也應該)應用於模塊化應用程序設計。

為了演示如何用包來模塊化你的應用程序,我們創建一個例子:

1、 新建一個具有兩個窗體的Delphi程序:Form1和Form2;

2、 將Form2從自動創建窗體列表中移除(Project |Options | Forms);

3、 在Form1上放一個按鈕,並且在按鈕的OnClick事件處理器中輸入如下代碼:

with TForm2.Create(Application) do

begin

ShowModal;

Free;

End;

4、記住添加Unit2到Unit1的uses子句中;

5、 保存並運行工程。

我們創建了一個簡單的應用程序,它顯示一個帶按鈕的窗體,點擊這個按鈕則會創建並顯示出另一個窗體。

但是如果想將上述例子中的Form2包含在一個可重用模塊中,並使它依然可以正常工作,我們該怎么辦呢?

答案是:包!

要為Form2創建包需要以下工作:

1、 打開工程管理器(View | Project Manager);

2 、右擊Project Group,選擇“Add NewProject...”;

3、在“New”項目列表中選擇“Package”;


4、 現在你應該可以見到包編輯器;

5、選擇“Contains”項目,然后點擊“Add”按鈕;

6、 然后點擊“Browse...”按鈕,並選擇“Unit2.pas”;

7、現在包中應該包含了“Unit2.pas”單元;

8、 最后保存並編譯包。

現在我們完成了這個包。在你的Project\BPL目錄中應該有一個名叫“package1.bpl”的文件。(BPL是Borland Package Library的縮寫,DCP是Delphi CompiledPackage 的縮寫。)


這個包已經完成了。現在我們需要打開包選項開關

並重新編譯原先的應用程序。

1、 在工程管理器中雙擊“Project1.exe”以選中該工程;

2、 右擊並選擇“Options...”(你也可以從菜單中選擇Project | Options...);

3、 選中“Packages”選項頁;

4、 選中“Build with runtime packages”檢查框;

5、 編輯“Runtime packages”編輯框:“Vcl50;Package1”,並點擊“OK”按鈕;

6、 注意:不要從應用程序中移除Unit2;

7、 保存並運行應用程序。

應用程序會象從前一樣運行,不過區別可以從文件的大小上看出來。

Project1.exe現在只有14K大小,而從前則是293K。如果你用資源瀏覽器查看EXE和BPL文件的內容,你就會發現Form2的DFM和代碼現在都保存在包中。

===============

可以更改包的輸出路徑,和exe對包的引用路徑。 例子:G:\D7\delphi7-2015-2\BPL包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM