最近用delphi做一个东东,整个东东由多个子程序组成,正好适合使用链接运行期包。翻了好一会儿大富翁,找到一篇好文章,转帖一下。
顺便问一下,这年头还有人在用Delphi开发项目吗?
一、什么是包?
Delphi中的包是Delphi程序间通讯与模块化的一个方法,其中包可分为设计包(比如控件都有一个设计包)和运行包,包的本质和Win32下的DLL并无本质
区别,可以理解为Borland专有的一个DLL,只不过这个“DLL”只能用Delphi开发的程序中。这有点类似于VC下的可以导出整个类的DLL--这种DLL只
能被使用MFC编程的程序使用。Delphi运行包的好处与VC中的专有DLL有相同之处:使用十分方便,开发的程序可以很容易模块化,便于合作开发。
1。设计包
其实每个VCL控件一般都有一个设计包,可以在 Project| Option...对话框中的Package页中安装、删除。设计包此处从略
2。运行包
可以显式链接也隐式链接(这一点与DLL几乎完全一模一样!)
二、包的开发方法
开发方法十分简单:New|...|package即可,可以在包中添加窗体和各种各样的控件以及相应的代码、数据,与平时开发应用程序无任何不同。
唯一不同的一点是生成 .BPL 文件,生成的BPL文件默认位置是在Delphi的安装目录下的Project|BPL中,不过可以另外设定Output目录。
另外还有一点不同是:在使用包之前必须要知道包中有哪些类,所有先注册。所以要在每个包中的 initialization部分注册类而在 finalization部分注销类
如下使用:
unit1.pas
……
initialization
RegisterClass(TForm2);
finalization
UnRegisterClass(TForm2);
三、使用方法
A)隐式链接
包含相应的Unit单元,同时在 Project | Option... 中的 Packages页选中 Build with RunTime Package复选框,并在相应的Edit框中添加要链接的
包的文件名,如果是放在和Exe文件同一目录中的话,可以不加路径名
B)显式链接
下面例程演示了如何使用:
procedure TForm1.Button1Click(Sender: TObject);
var
PackageModule: HModule;
AClass: TPersistentClass;
begin
PackageModule := LoadPackage('Package1.bpl');//装载包
if PackageModule <> 0 then
begin
AClass := GetClass('TForm2'); //得到包中的相应的类
if AClass <> nil then
with TComponentClass(AClass).Create(Application)
as TCustomForm do
begin
ShowModal;
Free;
end;
UnloadPackage(PackageModule);
end;
end;
四、包使用中的应该注意的几点:
1。包不能递归使用。
比如有下面两个程序:A和B两个包而且A中用到了B,那么B就不能使用A包了,否则出错。
解决方法如下:
使用额外的包!即将各个模块共有的部分抽取出来单独做一个包供其它所有的模块使用。
补充(by wallimn 2009-02-18):
关于动态连接与静态链接,部分人其实存在一个认识上的误区,就是,使用uses方式使用bpl中的类,并不一定就是静态链接。
动态与静态链接,其实取决于Project->Options->Packages窗口中,Build with runtime packages勾选与否。
若勾选,所有bpl都是动态链接的,包括自己写的BPL,若未勾选,则为静态链接。可以从生成的exe文件的大小直观的看出来。
分享到:
相关推荐
这可能涉及找到适合的语种包,然后按照说明进行安装。 2. 脚本编写:教程可能会教你如何编写安装脚本,包括如何指定安装目录、添加文件、设置安装类型(如完整安装或定制安装)、添加卸载程序等。 3. 调试与测试:...
3. **安装与使用**:用户在下载并解压"Delphi汉化包 会员版.exe"后,需要按照提供的说明进行安装。一般来说,这可能涉及到备份原有的配置,然后运行汉化程序,覆盖原有的资源,最后重启IDE以看到中文界面。 4. **...
"**下载说明.htm**"则是关于如何下载和使用该工具的指南,通常会包含详细步骤、注意事项以及可能遇到的问题解决方案。 综合以上信息,我们可以总结出以下知识点: 1. Delphi打包工具用于将Delphi或VB应用打包成...
3. 安装脚本或说明:指导用户如何正确安装和应用汉化包,避免错误操作导致的问题。 4. 补丁或修正文件:有时汉化过程中可能会遇到一些问题,这些文件用于修复可能出现的兼容性或显示问题。 使用汉化包需要注意以下...
DELPHI2007补丁包是一套针对Delphi 2007集成开发环境的完善修复和优化工具集合。Delphi是Borland公司(后来被Embarcadero Technologies收购)推出的一种面向对象的可视化编程语言,以其高效、灵活的特性在软件开发...
"第三方SDK的Jar包在Delphi XE5中的引入" Delphi XE5 是一个功能强大的集成开发环境,支持多种编程语言,包括 Object Pascal、C++、Java 等。然而,在 Delphi XE5 中引入第三方 SDK 的 Jar 包却是一个棘手的问题。...
资料包可能包含关于FMX的介绍和示例,让你掌握跨平台编程技巧。 4. **数据库编程**:DELPHI提供了强大的ADO.NET和FireDAC数据访问组件,使得数据库操作变得简单。资料包可能有相关的数据库连接、查询、事务处理的...
3. 安装:在 Delphi 11 IDE 中,打开“工具”菜单,选择“组件包管理器”或“部件板”选项。然后,通过“导入”或“添加”功能,指向刚才解压的目录,引入 Konopka Controls 7.0 的安装包。 4. 修复错误:由于原始...
通常,这样的文本文件还会包含一些关于许可证信息和版本历史的说明。 至于"L4D"文件,由于没有明确的扩展名,它可能是另一个压缩文件、源代码文件,或者是项目配置文件。如果是压缩文件,它可能包含了更深入的示例...
标签部分进一步细化了关键词,"rsa__delphi"和"delphi_rsa"重复强调了RSA加密与Delphi的结合,"delphi__rsa加密"和"delphi_加密"则表明这是关于在Delphi中进行加密操作的,特别是使用RSA算法。 压缩包内的唯一...
Delphi XE10.3 三方控件集合包 资源描述 本仓库提供了一个适用于Delphi XE10.3版本的三方控件集合包,包含以下控件: EhLib FastReport 6 Raize SUI BusinessSkinForm 资源说明 最近升级到Delphi XE10.3版本,发现...
4. 使用说明书(可能是文本文件或PDF),详细解释了如何配置和使用这个远程桌面应用。 5. 示例图片或截图,展示应用的界面和功能。 通过学习和理解这些内容,开发者可以深入掌握Delphi RDP的实现原理,并能够根据...
"《Delphi 12.1 中英文一键切换助手》简要操作说明.docx" 文件则包含了如何使用这个助手的详细步骤。通常,这份说明会包含以下几个部分: 1. **下载与安装**:首先,用户需要下载 "Delphi IDE 中英文一键切换助手 -...
DELPHI多国语言包是一个实用的开发工具,主要用于帮助Delphi开发者实现程序的多语言支持。这个压缩包包含了多个组件和文件,使得程序能够轻松地适应不同国家和地区的语言环境,提高软件的国际化和本地化能力。下面将...
10. **在Delphi中使用Windows的HTML联机说明档的例子**:源码可能展示了如何在Delphi程序中嵌入和显示HTML文档,可能涉及到WebBrowser控件或者其他HTML解析库。 11. **聊天程序**:这可能是一个简单的网络聊天应用...
包含了mscomm.reg和mscomm32.dep、mscomm32.ocx,还附上了mscomm在delphi xe2中的安装说明,和程序在非开发的电脑上使用时出错的解决办法,另:有一份测试用的源码,网上大多数教程都是在delphi 7说明的,...
该开发组由互联网上热爱 Delphi/C++Builder/BDS 程序开发的一群中国程序员自发组成,其目标是开发中国人自己的真正优秀的第三方免费开发包,更多的内容请查阅 关于 CnPack。 该专家包仍在持续开发中,建议您连接到 ...
《深入理解Delphi7 VCLSkin2资源包》 Delphi7 VCLSkin2资源包是一款专为Delphi7开发者设计的皮肤应用工具,它极大地丰富了Delphi应用程序的界面表现力,使得开发者能够轻松地为自己的软件添加各种美观的皮肤效果。...
标题 "Cef4_For_Delphi.rar" 涉及的是一个专为 Delphi 开发者设计的 CEF4(Chromium Embedded Framework)集成包,其中包含了所有必要的组件和安装说明,使得用户在编译程序后能够直接运行。CEF4 是一个开源框架,...