package的创建安装和使用
关于包,主要有一下几个问题:
包的创建,包的安装,包的使用;
1、包的创建:
file->new->other->package,好,就这样,一个包的雏形就创建好了,现在你就可以往里头添加东西了,主要包括两个方面的东西,一个是requires 一个是contains,其中:
#requires:用来指定这个包需要使用到的一些外部包的名字;
#contains:指定这个包需要包含的unit的名字;
2、包的安装:
在编辑好包的requires和contains的条目之后,先点击compile,再点击install按钮,ok,你已经在ide中安装了一个你自己的包;
3、包的使用:
参考下面的 代码3
需要注意的地方:
a.一个包不能出现另外一个包的contains里头;
b.在编译的时候,被包含在contains里头的单元,以及被这些包含在contains里头的单元uses的单元都会被编译进这个包里头;当然了,这里指的是用户自定义的单元;
c.如果有多个package将要被同一个应用application(包括delphi ide)使用,那么些package里头不应该有相同的unit,无论他们是被直接的还是间接的(所谓的间接就是b中的那种情况)被包含进去的;这就是说,如果你的创建一个package,这个contains了一个vcl里头的unit,那么你就不能将这个package安装到ide里头去。那么如果你一定要用到一个已经被打包的unit的话,你可以将这个unit所在的package加入到requires中去;
下面是一个例子:
我们新建一个包,这个包的代码如下:
代码1
package IAmTestingPackage;
{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $40000000}
{$IMPLICITBUILD OFF}
requires
rtl,
vcl;
contains
ForTestPackage in 'ForTestPackage.PAS';
end.
我们看到包里头contains了一个叫做ForTestPackage 的单元;
代码2:
unit ForTestPackage;
interface
uses
SysUtils,Dialogs,ForTestUses;
type
TForTestPackage = class(TObject)
public
procedure show;
end;
implementation
{
******************************* TForTestPackage ********************************
}
procedure TForTestPackage.show;
begin
showmessage('i am in the package,i am contains directly');
end;
end.
上面的代码的uses语句中包含了ForTestUses单元;
代码3:
unit ForTestUses;
interface
uses
SysUtils,Dialogs;
type
TForTestUses = class(TObject)
public
procedure Show;
end;
implementation
{
********************************* TForTestUses *********************************
}
procedure TForTestUses.Show;
begin
showmessage('in am contained indirectly');
end;
end.
然后我们对package进行编译并安装,发现虽然ForTestUses没有明确的出现在package的contains里头,但是它也一样的被编译进了package;下面我们通过一个小程序来验证一下;
程序的代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,FortestPackage,Fortestuses;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
ForTestUses:TForTestUses;
ForTestpackage:TForTestPackage;
begin
ForTestUses:=TForTestUses.Create;
ForTestUses.Show;
ForTestUses.Free;
fortestpackage:=TForTestpackage.Create;
ForTestpackage.show;
Fortestpackage.Free;
end;
end.
如果ForTestUses没有被编译进package里头,那么在unit1的uses语句中添加ForTestUses应该是会出错的,可是现在没有,说明它确实是被添加到IAmTestingPackage这个package里头了;
转载于:https://www.cnblogs.com/strinkbug/archive/2006/09/24/513346.html
package的创建安装和使用相关推荐
- Qt IFW创建安装程序 4
在准备好程序的目录结构之后,接下来的任务就是要创建安装程序,这通常有很多好处: 压缩软件的大小: 简化软件的安装过程: 提供亲切.友好的操作界面: 保护软件的完整性,避免被盗版.破解或植入病毒. 那么 ...
- 关于sublime-text-2的Package Control组件安装方法,自动和手动
之前在自己的文章<Linux下安装以及破解sublim-text-2编辑器>的文章中提到过关于sublime-text-2的Package Control组件安装方法. 当时使用的是粘贴代 ...
- sublime text3 Package Control 插件安装及推荐(MAC)
参考: https://www.zhihu.com/question/36233553 https://www.cnblogs.com/zuoan-oopp/p/6692797.html 插件推荐 因 ...
- sublime3103 破解及Package Control离线安装
sublime3103 使用 破解安装 下载安装包(x86/x64) 百度即可 license key -– BEGIN LICENSE -– Michael Barnes Single User ...
- 微软官方推出的win10安装或者创建安装u盘的工具
https://www.microsoft.com/zh-cn/software-download/windows10 下载安装后,可根据提示,一步步的安装win10或者创建安装u盘 转载于:http ...
- 如何利用 Media Creation Tool 来创建安装介质或下载 ISO 文件
使用 Media Creation Tool 来创建安装介质 注意事项 创建步骤 Window 10 Media Creation Tool 的另一个功能是它可以帮助你为另一台 PC 创建安装介质或下 ...
- Smart Package Robot,高级安装记录器和 RPA 脚本系统
Smart Package Robot,高级安装记录器和 RPA 脚本系统 Smart Package Robot (SPR) 是一个先进的安装记录器,外加包含 1000 多个用于 Microsoft ...
- sublime 安装 插件 package control,安装docblockr
首先菜单栏Preferences -> Package Control 然后在弹出窗里输入 install package, 然后回车 或点击下面下拉菜单的install package 等待下 ...
- php package manager,package命令的安装教程
给cygwin安装top, free,wget,curl,clear等命令 我机器上已经安装了cygwin用于编译cygwin,但还缺少nodejs需要的openssl-devel,pkg-confi ...
最新文章
- Flex/Silverlight的技术比较转
- easyui表格编辑事件_Unity手游开发札记——从Odin插件聊基于元数据的编辑器实现
- Shell脚本攻略05-数组和关联数组
- POJ 3020 Antenna Placement
- thinkphp index.php隐藏,thinkphp5怎么隐藏index.php入口文件?
- oracle 表关联索引优化,Oracle执行计划调优-超级大表关联超级小表的性能调优
- ios ffmpeg h264 decode
- 企业之haproxy
- acs880变频器静态辨识_(完整版)ABB-ACS880变频器调试参数
- 二、博客首页完成《iVX低代码仿CSDN个人博客制作》
- Github TOP100 Android开源,android开发环境搭建实验报心得
- 【短视频运营】抖音推送机制 | 账号 “ 完播率 “ 数据
- oracle 授权所有语句,oracle grant 授权语句
- android 打开pdf文件
- CAD虚线不显示怎么办
- GIS与虚拟仿真下直观、完整、立体地园区实景展示
- 各种路由器设备的发展总结及展望
- 《软件测试》读书笔记
- 并发用户数,吞吐量计算公式
- OCP 12c最新考试题库及答案(071-2)