关于包,主要有一下几个问题:

包的创建,包的安装,包的使用;

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的创建安装和使用相关推荐

  1. Qt IFW创建安装程序 4

    在准备好程序的目录结构之后,接下来的任务就是要创建安装程序,这通常有很多好处: 压缩软件的大小: 简化软件的安装过程: 提供亲切.友好的操作界面: 保护软件的完整性,避免被盗版.破解或植入病毒. 那么 ...

  2. 关于sublime-text-2的Package Control组件安装方法,自动和手动

    之前在自己的文章<Linux下安装以及破解sublim-text-2编辑器>的文章中提到过关于sublime-text-2的Package Control组件安装方法. 当时使用的是粘贴代 ...

  3. sublime text3 Package Control 插件安装及推荐(MAC)

    参考: https://www.zhihu.com/question/36233553 https://www.cnblogs.com/zuoan-oopp/p/6692797.html 插件推荐 因 ...

  4. sublime3103 破解及Package Control离线安装

    sublime3103 使用 破解安装 下载安装包(x86/x64)  百度即可 license key -– BEGIN LICENSE -– Michael Barnes Single User ...

  5. 微软官方推出的win10安装或者创建安装u盘的工具

    https://www.microsoft.com/zh-cn/software-download/windows10 下载安装后,可根据提示,一步步的安装win10或者创建安装u盘 转载于:http ...

  6. 如何利用 Media Creation Tool 来创建安装介质或下载 ISO 文件

    使用 Media Creation Tool 来创建安装介质 注意事项 创建步骤 Window 10 Media Creation Tool 的另一个功能是它可以帮助你为另一台 PC 创建安装介质或下 ...

  7. Smart Package Robot,高级安装记录器和 RPA 脚本系统

    Smart Package Robot,高级安装记录器和 RPA 脚本系统 Smart Package Robot (SPR) 是一个先进的安装记录器,外加包含 1000 多个用于 Microsoft ...

  8. sublime 安装 插件 package control,安装docblockr

    首先菜单栏Preferences -> Package Control 然后在弹出窗里输入 install package, 然后回车 或点击下面下拉菜单的install package 等待下 ...

  9. php package manager,package命令的安装教程

    给cygwin安装top, free,wget,curl,clear等命令 我机器上已经安装了cygwin用于编译cygwin,但还缺少nodejs需要的openssl-devel,pkg-confi ...

最新文章

  1. Flex/Silverlight的技术比较转
  2. easyui表格编辑事件_Unity手游开发札记——从Odin插件聊基于元数据的编辑器实现
  3. Shell脚本攻略05-数组和关联数组
  4. POJ 3020 Antenna Placement
  5. thinkphp index.php隐藏,thinkphp5怎么隐藏index.php入口文件?
  6. oracle 表关联索引优化,Oracle执行计划调优-超级大表关联超级小表的性能调优
  7. ios ffmpeg h264 decode
  8. 企业之haproxy
  9. acs880变频器静态辨识_(完整版)ABB-ACS880变频器调试参数
  10. 二、博客首页完成《iVX低代码仿CSDN个人博客制作》
  11. Github TOP100 Android开源,android开发环境搭建实验报心得
  12. 【短视频运营】抖音推送机制 | 账号 “ 完播率 “ 数据
  13. oracle 授权所有语句,oracle grant 授权语句
  14. android 打开pdf文件
  15. CAD虚线不显示怎么办
  16. GIS与虚拟仿真下直观、完整、立体地园区实景展示
  17. 各种路由器设备的发展总结及展望
  18. 《软件测试》读书笔记
  19. 并发用户数,吞吐量计算公式
  20. OCP 12c最新考试题库及答案(071-2)

热门文章

  1. [Flink]Flink常用的DataStream转换算子
  2. [转]Python中的eval()、exec()及其相关函数
  3. 信号(signal)
  4. (8). 使用JPA保存数据【从零开始学Spring Boot】
  5. S2SH新手框架结构的准备工作只需要导入这些文件
  6. Linux 管道(pipe)原理及使用
  7. 【转载】spring mvc 使用session
  8. javascript中引号嵌套
  9. XSpreadsheet-在线表格插件
  10. 中小型研发团队架构落地实践18篇,含案例、代码