bpl 包的編寫和引用

2022-04-16 19:03:57 字數 3819 閱讀 4977

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

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

執行期包與應用程式

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

為了演示如何用包來模組化你的應用程式,我們建立乙個例子:

1、 新建乙個具有兩個窗體的delphi程式:form1和form2;

2、 將form2從自動建立窗體列表中移除(project |options | forms);

3、 在form1上放乙個按鈕,並且在按鈕的onclick事件處理器中輸入如下**:

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」檢查框;

6、 注意:不要從應用程式中移除unit2;

7、 儲存並執行應用程式。

應用程式會象從前一樣執行,不過區別可以從檔案的大小上看出來。

project1.exe現在只有14k大小,而從前則是293k。如果你用資源瀏覽器檢視exe和bpl檔案的內容,你就會發現form2的dfm和**現在都儲存在包中。

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

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

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

執行期包與應用程式

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

為了演示如何用包來模組化你的應用程式,我們建立乙個例子:

1、 新建乙個具有兩個窗體的delphi程式:form1和form2;

2、 將form2從自動建立窗體列表中移除(project |options | forms);

3、 在form1上放乙個按鈕,並且在按鈕的onclick事件處理器中輸入如下**:

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」檢查框;

6、 注意:不要從應用程式中移除unit2;

7、 儲存並執行應用程式。

應用程式會象從前一樣執行,不過區別可以從檔案的大小上看出來。

project1.exe現在只有14k大小,而從前則是293k。如果你用資源瀏覽器檢視exe和bpl檔案的內容,你就會發現form2的dfm和**現在都儲存在包中。

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

Delphi中的包(三) bpl和dll

摘 自 http blog.csdn.net soobey archive 2005 08 30 468017.aspx 曾經聽說過 bpl就是一種特殊的dll 但是沒有想到這句話具有這麼大的意義。最近看到有人在屬於某個dpk的unit裡面寫export語句,覺得非常驚奇。但是遍查delphi的he...

Delphi中的包(二) 關於bpl

摘自 http blog.csdn.net soobey archive 2005 08 29 467732.aspx 現在我們不得不寫自己的dpk工程,以更改地檢測我們的猜想。我們首先建立乙個project group,包含三個工程 program projectexe uses forms,wi...

Delphi中BPL包的使用,個人經驗

用包可以分模組編寫功能,方便開發階段的組織,同時也便於後期的公升級維護,使公升級的粒度越來越少 也是用了c 的類庫之後的感悟 下面寫幾點經驗 一 不要用delphi本身的bpl,把delphi自身的包中的單元取出來,合併成乙個bpl。二 不要直接用三方控制項的安裝包,也要自己建乙個包,把單元檔案中加...