营销文库Delphi Package 无痛使用.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
营销文库Delphi Package 无痛使用

Delphi Package 無痛使用 作者:Deven?Tzu 日期:Sep-3-2001 相信很多使用Delphi的人都有想過將自己的應用系統分割成好幾個Package, 這樣的好處是可以只更新單一的Package (.BPL)就可以了, 而且.BPL還有一個.DLL沒有的好處, 所有的.BPL 可以有一份大家共用的記憶區塊(變數, function, procedure 等), 使用上就很方便了, 但是事實上很多人都因為Package使用上的限制而放棄(我曾經就是一個), 現在我就來介紹Delphi Package的使用方法(不過實際處理方式請參考程式碼, 本說明不多作說明): 簡介 Package 和 斯斯 一樣分為二種: 靜態載入: 一般大家在用Delphi時都是使用『靜態載入』, 像VCL的Package就是這個方式, 這個方式的好處是設計者不用去理會Package 的載入及釋放, 其實設計者根本感覺不到有使用這項技術; 當然您也可以手動將Package掛上系統(project-Options-Packages-Build with runtime packages中加入, 記得Package Name彼此的分隔符號是『;』) 動態載入: 至於『動態載入』當然就和『靜態載入』相反, 不論是載入及釋放都要自己來處理, 看起來好像『動態載入』一無是處, 其實也不是這樣, 『動態載入』可以作到要使用時才載入, 有點像 PnP (隨插即用)的功能, 這是『靜態載入』作不到的. 當然如果您高興的話二種混用也是很好的方式, 也算是各取其優點來使用(本範例就是使用此方式) 限制 有些情形下使用Package只能間接參考的方式取得資料(變數, 元件, 物件 …). Package Name 不能重覆. Contains 中的 Unit Name 不能在『所有』的Package中重覆出現(只能出現一次). PackageA有使用到PackageB必需要在Requires中引用其 .dcp 檔(Unit及Package的 Head File, C++使用 .DLL不是也要 Include Head File嗎 ?), 但是PackageA及PackageB不能彼此循環引用. 範例說明 本範例主要目的是要讓程式可以像 獨立執行檔 (就是系統程式都是在一個Proejct中未分割)一樣, 在設計時可以直接引用參考另一個單元(Unit)的東西, 和原來的寫法沒有什麼不同, 不過最好是作成二個 Project 一個是 Design Time 版本(不分割系統), 一個是分發版本(分割系統), 這樣Debug會比較方便些; 本範例是改自 蔡煥麟 先生所寫pkgdemo2.zip 首先要使用Package必需將project-Options-Packages-Build with runtime packages的選項勾選, 再將共用的Package Name 加入(如圖一) (圖一) ? 然後在 Requires 中引用使用到的Package dcp 檔(如圖二) (圖二) 選Options-Description-Runtime only (如圖三), 因為我們是將系統分割不用Design Time Package , 如果選 Designtime and runtime也可以不過會在系統上留一堆Design Time package並沒有意義, 而且會比較佔用記憶體; 至於 Designtime only 就不用說了吧! 您的應用系統應該是要run的吧! (圖三) Package1 有使用到Appaddin及PkgDATA所以在Requires 中引用(如圖四) 圖四)   Package1 中只有一個TForm1(可以放很多的TForm就不用我多說了吧), 內容如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, Db, DBTables; type TForm1 = class(TForm) Label1: TLabel; btnForm2: TButton; Edit1: TEdit; DBGrid1: TDBGrid; btnGetField: TButton; btnGetVar: TButton; procedure btnForm2Click(Sender: TObject); procedure Edit1Exit(Sender: TOb

文档评论(0)

ahuihuang1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档