Delphi中的包(二):关于bpl

写自己的dpk工程,以更改地检测我们的猜想。我们首先建立一个project group,包含三个工程:

program ProjectEXE;
uses
Forms,
Windows,
UnitFormMain in 'UnitFormMain.pas' {FormMain};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TFormMain, FormMain);
Application.Run;
end.
unit UnitFormMain;
interface
uses
Windows, StdCtrls, Forms, Classes, Controls;
type
TFormMain = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
procedure TFormMain.Button1Click(Sender: TObject);
var
LForm:TForm2;
begin
  LForm:=TForm2.Create(Application);
LForm.ShowModal;
LForm.Free;
end;
end.
package Package1;
requires
vcl,
rtl;
contains
UnitFormAnother in 'UnitFormAnother.pas' {FormAnother},
UnitForm1 in 'UnitForm1.pas' {Form1};
end.
unit UnitFormAnother;
interface
uses
Forms;
type
TFormAnother = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
end.
unit UnitForm1;
interface
uses
UnitFormAnother;
type
TForm1 = class(TFormAnother)
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
end.
package Package2;
requires
rtl,
vcl;
contains
UnitForm2 in 'UnitForm2.pas' {Form2};
end.
unit UnitForm2;
interface
uses
UnitFormAnother;
type
TForm2 = class(TFormAnother)
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
end.

时间: 2024-12-10 09:27:32

Delphi中的包(二):关于bpl的相关文章

Delphi中的包(一):关于exe的编译、连接和执行

首先把需要分析的问题列出来: 什么是包?什么是exe?它们在组成上有什么不同?包跟dcu是什么关系?dcp 是干什么的?这些文件在编译时是什么关系?又是怎么装载的?装载了以后怎么 样操作包?dll可以exports,但是为什么delphi帮助中不提包的exports,但是 有些代码却又在包中使用exprots? 首先来看看delphi的编译过程.delphi的工程中有两类:包和程序,前者的 后缀为dpk,后者为dpr.从简单的开始,先来搞dpr.根据delphi的帮助文档, 一个典型的dpr文件

Delphi中的包(三):bpl和dll

曾经听说过"bpl就是一种特殊的dll",但是没有想到这句话具 有这么大的意义.最近看到有人在属于某个dpk的Unit里面写export语句,觉得 非常惊奇.但是遍查delphi的help,与export相关的都是library.今天看了 <delphi源代码分析>,才知道上面这句话的含义.因此有下面的推论: 对dll工程来说,exports既可以写在工程文件里面,也可以写在Unit里面, 没什么区别. bpl是一种dll. 上面的exports很正常. 其实按<de

Delphi中创建MIDAS服务器并注册(MIDAS之二)

Delphi中如何创建并注册MIDAS应用程序服务器COM程序   Delphi提供一些向导(如:RemoteDataModule,Automation Object,TypeLibrary)来自动产生COM程序的结构.   (法1)创建一个普通应用程序服务器        新建一个普通工程,然后通过New->Other->Multitier->Remote DataModule,来自动新建一个COM服务器结构.        注: 要注册创建的MIDAS应用服务器,可以运行应用程序或者

如何在Delphi中调用oracle的存储过程返回数据集

oracle|存储过程|数据 选自CSDN http://search.csdn.net/Expert/topic/2280/2280860.xml?temp=2.169436E-02 论坛中JCC0128 网友的发言 [delphi+oracle报表解决方案(一)]delphi中调用oracle的存储过程(分带返回游标,不返回值两种)  关键字: delphi ,oracle存储过程,游标,返回数据集,报表 注:delphi 6+ oracle 8.1.6 一.创建包与包体 1.附:建表aac

在Delphi中巧妙利用RES文件

在Delphi项目中,通常有一个与项目名称主文件名相同的.RES文件,该文件用于保存应用程序图标等资源,对应于此文件,在项目文件中一定含有编译指示"{$R *.res}",告诉编译器编译时需要包含与项目主文件名相同的.RES文件. 同样,如果需要在应用程序中以资源形式包含任何文件类型,也可以利用.RES文件.本文将告诉你如何利用RES文件在Delphi程序内部包含文件. 一创建.RES文件 这里以一组音频文件为例.首先用记事本等任何文本编辑器编写文件"MyMusic.RC&q

Delphi中实现让TListView接收文件拖放

在使用Delphi开发应用程序时常常要使用到TListView列表视控件,但是仅仅使用TListView的原有属性.方法和事件是不够的,常常需要在程序开发过程中对列表视的功能进行扩展, 比如对列表视添加任意列组合排序.ListItem拖动.CustomDraw自绘制.加入背景图等功能,由此可见Delphi自带的TListView列表视控件功能有限,并不让人感到满意.为了让列表视具有更多的功能,我们只有求助于第三方控件,或者自己编写代码对TListView进行改造. 最近我在用Delphi开发一个

Delphi中正则表达式入门

在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 准备彻底而细 致地研究它. 官方网站: http://www.regular-expressions.info/delphi.html 直接下载: http://www.regular- expressions.info/download/TPerlRegEx.zip 安装方法: 1.先把解压的 TPerlRegEx 文件夹放一个合适的地方, 我放在了 Delphi 的 Imports 目录中. 2.目前最新 For

如何在delphi中使用xml文档

在delphi中使用xml文档有两种方法,一是使用delphi 内置的xml broker:一是使用msxml.dll . 一  使用xml broker, 是delphi 内置的 例: unit ShowXML; interface uses Classes HTTPApp Db DbClient Midas XMLBrokr WebComp MidItems; type TCustomShowXMLButton = class(TXMLButton IScriptComponent) pro

Delphi中预编译指令的使用方法

在Delphi中,也有与C相似的预编译指令,虽然该类指令只在当前的单个文件有效(也有可能是笔者未全面了解该类指令的真正用法),但是这一类指令对于进行多版本的制作工作(如从标准版中出学习版),确实有着相当不错的用途. 一.指令介绍: 1.DEFINE指令: 格式:{$DEFINE 名称} 说明 :用于定义一个在当前单元有效的符号(Symbol).定义了 之后可以使用IF DEF和IFNDEF指令来判断该符号是否存在. 2.UNDEF指令:格式:{$UNDEF 名称}说明:用于取消一个在当前单元已经