无痛使用Delphi Package
Package的优点
- 应用程序可以被高度的模块化 , 而且可以逐渐交付完成的功能给客户
- 维护方便 , 可以只更新单一的模块功能
- 提升程序的载入速度
- 有些情形下使用Package只能间接參考的方式取得资料(变量, 类 …).
- Package Name 不能重复.
- Contains 中的 Unit Name 不能在所有的Package中重复出现 , 只能出现一次
- PackageA有使用到PackageB必需要在Requires中引用 但是PackageA及PackageB不能彼此循环引用.
- 设计期包(Designtime only) -用来在DELPHI的IDE环境安装控件和为控件建立特殊的属性编辑器 。 设计期包允许包含控件、属性和控件编辑器等等 ,
- 运行期包(Runtime only)-当运行程序时提供VCL和库函数的支持 , 操作上很类似标准的动态链接库 。 Install按钮无法使用 。
- 设计和运行期包(Designtime and Runtime ):设计与运行时都能用
文章插图
DCP 英文全称:delphi compiled package , 是 package 编译时跟 bpl 一起产生出来的 , 记录着 package 中公开的 class、procedure、function、variable、const.... 等等的名称和相对位置 。 如果 某个控件包 A 引用了 控件包 B , 当 控件包 A 编译时 , 需要 控件包 B.dcp , 若 控件包 B 有修改 , 更改了公开的界面 , 则 控件包 A 必须在 控件包 B 编译之后重新编译 , 以引用新的 B.dcp 。 否则 , 当 控件包 A 执行时 , 执行到引用自 控件包 B 的内容时 , 就会出现错误 。 DCP相当于C++中的Lib , 编译时需要 。
【无痛使用Delphi Package】DCU 英文全称:Delphi Compiled Unit File , 是delphi单元文件.pas文件编译后产生的文件 , 感觉没有太大用处 。
Package加载方式Package中的代码
unit Unit2;interfaceuses Vcl.Dialogs;//函数案例function add(Num1, Num2: Integer): Integer; stdcall;//过程案例procedure ShowMsg(Str: String); stdcall;type//类的案例TUser = classpublicfunction ShowString(): string;end;// 需要像DLL一样声明导出函数的列表 , 如果是静态导入此项可以省略exports add, ShowMsg;implementationprocedure ShowMsg(Str: String);beginshowmessage(Str);end;function add(Num1, Num2: Integer): Integer;beginResult := Num1 + Num2;end;{ TUser }function TUser.ShowString: string;beginResult := 'HelloWorld';end;end.
静态加载一般大家在用Delphi時都是使用『静态载入』, 像VCL的Package就是这种方式, 这种方式的好处是设计者不用去理会Package 的载入和释放, 其实设计者根本感觉不到设用这项技术; 当然也可以手动将Package加入到项目中『project->Options->Packages->Build with runtime packages中加入Package Name彼此的分隔符是分号』文章插图
文章插图
推荐阅读
- Biogen将使用Apple Watch研究老年痴呆症的早期症状
- Eyeware Beam使用iPhone追踪玩家在游戏中的眼睛运动
- 或使用天玑1000+芯片?荣耀V40已全渠道开启预约
- 苹果将推出使用mini LED屏的iPad Pro
- 手机能用多久?如果出现这3种征兆,说明“默认使用时间”已到
- 苹果有望在2021年初发布首款使用mini LED显示屏的 iPad Pro
- 笔记本保养有妙招!学会这几招笔记本再战三年
- 数据可视化三节课之二:可视化的使用
- 索尼sw77与sw55的使用差别感受
- 爆料称一加9系列与潜望式镜头无缘 继续使用普通长焦