什么是运行期包与设计期包

ReportMachine 7.0 在 Delphi 12.3 下的安装、报表设计与踩坑实录 在 Delphi 开发中,报表控件是业务系统不可或缺的组件。随着 IDE 从旧版本升级到 Delphi 12.3,控件的编译版本适配成为首要难题——大型报表组件往往与编译器强绑定,需要匹配的 DCU/BPL 才能正常安装。ReportMachine 7.0 作为一款轻量级 VCL 报表控件,运行期包与设计期包分离,安装时需遵循先编译后注册的顺序,并正确配置 Library Path,才能避免控件丢失、单元找不到等问题。它的技术价值在于支持快速设计模板、动态绑定数据集,并能将报表导出为 Excel 等格式,有 阅读详情

======================================================================
1. 内容简介
======================================================================

    本文档深入明了的阐述了什么是运行期包、设计期包
    同时解释了产生 DesignIntf 错误的原因

======================================================================
2. 正文
======================================================================

    本文以 CnPack.dpk (运行期包)、dclCnPack.dpk (设计期包)为例说明。这
两个包,一个是运行期包,另一个是设计期包,设计期包包含有组件编辑器。
    组件包通常按运行期包和设计期包两个包来发布,其中运行期包中包含了应
用程序编译实际需要的单元,而组件编辑器、属性编辑器这些专门为 IDE 设计
期编写的代码在应用程序的 exe 中是不需要的,所以组件源码中会将这些设计
编辑器的代码放到单独的 pas 文件中,这些包含设计期 pas 的单元只在设计期
包的 dpk 中包含,甚至于那些向 IDE 中注册组件的 Register 函数也可以不放
在组件单元中。

    设计期包引用了运行期包, Delphi 的包技术是基于 unit 的,实际上
build with runtime package 时,是在连接期,将对程序引用到的单元的连接
变成对运行包的外部引用。

    这样来说吧,我们要编写一个在 IDE 中可以安装使用的组件,需要有一个
TMyComp 组件的实现,然后有一个 Register 函数将组件注册到 IDE 控件面板。
    如果这个组件的属性需要编辑器,或者组件本身有编辑器,还需要写一些编
辑器的代码。这些在 IDE 中用来编辑组件及其属性的代码,对应用程序来说是
没有意义的注册组件,编辑器的 Register 函数对应用程序也是没有意义的,
而且这些编辑器是依赖于 IDE 的 ToolsAPI、DesnIntf 等 OTA 单元。
    如果和 TMyComp 的代码放在一个 pas 中编译的时候,应用程序就还需要间
接引用到 IDE 的这些 OTA 单元,而事实上这样处理是不适当的。
    所以开发组件包的作者,就引入了运行期包和设计期包两个概念,将那些应
用程序需要编译到 exe 中的源代码放在组件实现的 pas 单元中,比如
dclCnPack_D7.dpk的内容,里头包括的 unit,都是应用程序中用不到的,只在
IDE 里头使用。

    这些 pas 都包含在运行期包的 dpk 文件中。运行期包在工程选项中,是设
置为 Runtime only 模式。只能用于运行期,不能进行安装。所以我们在 IDE
中打开 CnPack_D7.dpk 文件,点 Install 是会提示错误的组件的注册、编辑器
这些内容,很显然是要引用到组件本身的代码的。
    当然,对于单个组件,可能觉得分开写这两个单元太麻烦。但对于大型的组
件包,这样分开设计就很明了了。
    CnPack 的组件代码结构基本上就是按这个原则来处理的。

    比如包含 TMyComp 组件的代码在 MyComp.pas 里,而针对 TMyComp 的组件
注册和编辑器,则放在 MyCompEditor.pas 里头。在 MyCompEditor.pas 中
uses MyComp 这个单元就行了,一份是纯运行期包,一份是在运行期包外附加的
设计期代码。
    Register 函数也应该放在 MyCompEditor.pas 中,这个函数应用程序的
exe 是不调用的。当然,放在 MyComp 中也不会出错。

    如果只是注册组件,由于 RegisterComponents 在 Classes 中定义,所以
没什么问题,但是如果要注册属性编辑器 RegisterPropertyEditor ,则是在
DesignIntf 中定义的。DesignIntf 这个单元对应用程序来说根本没有用处的只
是 IDE 提供的设计期接口。如果将 Register 函数放在组件实现代码中,间接
引用到单元,就可能导致用户在安装编译组件时出现找不到DesignIntf 的错误,
因为 DesignIntf 等单元默认是不在 IDE 的搜索路径中的。

    从 D6 开始,有个设计期的单元没有放出源码来(Proxies.dcu),在 D6
以上版本的 DesignEditor.pas 中,实现部分引用到了这个单元,而 Borland
没有提供源码,导致大量组件运行期编译不过。
    Proxies 这个单元好象是在 dsnIDEXX.bpl 里头引用了 DesignEditor 的组
件,安装到 IDE 中时没有问题,是因为设计期包是带 dsnIDE.bpl 编译的,而
应用程序编译就通不过了。
    所以我们提倡设计期包与运行期包分开,基本上正规点的组件包都是按这个
方法做的。

 
Delphi老程序界面现代化:SmartEffects VCL特效控件安装与实战 在Windows桌面应用开发中,界面视觉效果直接影响用户体验。对于基于Delphi VCL构建的传统Win32应用而言,不重写框架即可实现现代化UI升级,一直是开发者的核心诉求。VCL特效组件通过拦截绘制过程、叠加阴影与动画层,在既有控件机制上提供轻量级增强,相比自绘UI大幅降低了开发与维护成本。本文以Almediadev SmartEffects VCL 3.61为例,围绕窗体阴影、按钮动效、登录窗口等典型场景,系统讲解控件包安装流程、设计期与运行期包配置、属性调优技巧及常见兼容性问题,并给出与老项目融合 阅读详情

相关推荐

FastReport 2023.3在Delphi 12.3中的安装与报表开发指南

在Delphi开发中,第三方控件的安装与集成是工程实践的重要环节,尤其像FastReport这样的专业报表组件,其编译安装逻辑与常规软件不同。理解运行期包与设计期包的分工、Library Path的配置原理,是高效使用Delphi控件的基础。FastReport作为一款功能强大的报表生成工具,支持数据库关联、可视化设计、动态报表创建及PDF导出,广泛应用于订单管理、数据展示等业务场景。本文以FastReport 2023.3与Delphi 12.3的适配为例,梳理从解压源码、编译BPL到注册设计期包的完整流

weixin_34198762的博客 345

File Not found 'DesignIntf.dcu'或者'Proxies.dcu' 的解决方法

1、File Not found 'DesignIntf.dcu'在Delphi 7~2007下的解决方法: 在Library中加入$(BDS)\Lib\ToolsAPI 的搜索路径。 2、File Not found 'Proxies.dcu'在Delphi 7~2

xiongmao000738 5647

File Not found 'DesignIntf.dcu'解决方法

File Not found 'DesignIntf.dcu'在D7下的解决方法 在LIABRAY中加入TOOLAPI的安装路径

Delphi2010,DelphiXE 安装控件找不到DesignIntf 解决办法

今天安装了一个可以支持IP 地址输入的edit控件,安装后可以放到窗体上,但是编译提示找不到DesignIntf,DesignEditors 从Delphi6开始,就对DesignIntf,DesignEditors 进行了变化,以前安装也碰到过不同版本识别 DesignIntf,DesignEditors的问题,经过处理都可以用 但是这个IP地址控件,始终编译不了,在网上找到一个解决办法: ...

weixin_34122604的博客 2560

sqlite for DelphiXE2 真正支持中文版

Sqlite for DelphiXE2 真正支持中文版本 完整支持中文库,支持最新版本Delphi XE2。 网上找的 sqlitewrapper16 都还是有些问题,不支持中文的参数查询。 但我这个是收集多方资源合并使用,完整支持中文查询与中文参数查询。

BSL编程语言 —— 系统化程序设计

BSL编程语言简介 文章目录0. 选择编程语言1. 写简单的表达式(Expression) 0. 选择编程语言 如果你第一次使用DrRacket,打开后需要选择Beginning Student Language (BSL) Language -> Choose Language (或直接按Ctrl + L),看到如下洁面后选择Beginning Student,点击OK 定义区【De...

CSDoneRight的博客 6451

delphi使用 DockForm DesignEditors F2613 Unit 'DockForm' not found

DockForm [dcc32 Fatal Error] ToolsAPI.pas(18): F2613 Unit 'DockForm' not found. 这样解决了XE7。 http://docwiki.embarcadero.com/Libraries/XE7/en/DesignIntf DesignEditors  Defines the interfaces and ...

weixin_34248849的博客 1403

SPSS与SPSS Modeler,不一样的世界

1. SPSS软件的前世今生 1.1 IBM SPSS的由来 与数据打过交道的小伙伴们,应该对SPSS软件都不陌生。SPSS是世界上最早的统计分析软件,由斯坦福大学的三个研究生大牛于1968年研发,同时还成立了SPSS公司。SPSS最初的全称是Solutions Statistical Package for the Social Sciences(社会科学统计软件包),随着SPSS产品服务领...

qq_24339451的博客 3613

升级到Delphi 6 - 兼容性问题之二

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 566

大模型面试题34:Transformer的Encoder和Decoder区别与协作

Encoder:双向自注意力,专注理解输入,输出语义特征;Decoder:掩码自注意力+编码器-解码器注意力,专注生成输出,实现语义对齐。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 813

Sublime Text4代码配色自定义方案

关于Sublime Text对于我的使用体验,只能说内置的代码主题真的都太low了,一点都不好看。所以接下来我分享一下我自定义代码配色。当然,大家也可以通过我给的中文翻译注释来自定义自己喜欢的颜色。废话不多说,直接上代码直接将代码复制粘贴到:Preferences > Customize Color Scheme 即可。},"globals":"foreground": "var(white)", // 前景色。

追求细节,成就完美 6026

运行期包与设计期包详解

====================================================================== 1. 内容简介 ======================================================================     本文档深入明了的阐述了什么是运行期包、设计期包     同时解释了产生 Design

lynnelxl的专栏 785

【系列05】端侧AI:构建与部署高效的本地化AI模型 第4章:模型量化(Quantization)

量化的基本思想是减少模型中用于表示参数和激活值的比特数。在模型训练时,参数通常使用32位浮点数(FP32)进行存储,这提供了高精度,但也消耗大量的内存和计算资源。量化则将这些32位浮点数转换成低比特数表示,通常是8位整数(INT8)。量化的原理可以概括为:对浮点数范围进行校准,并将其映射到更小的整数范围内。例如,将一个FP32的权重(如-1.5到1.5)映射到INT8的范围(-128到127)。在推理过程中,模型将使用这些低精度的整数进行计算,从而大大减少了所需的计算量。量化带来的主要收益减少模型大小。

学习,输出==》再学习再输出 1216

什么是运行期包与设计期包 (同时解释了产生 DesignIntf 错误的原因)

运行期包,只能编译,不能安装的  本文以 CnPack.dpk (运行期包)、dclCnPack.dpk (设计期包)为例说明。这 两个包,一个是运行期包,另一个是设计期包,设计期包包含有组件编辑器。     组件包通常按运行期包和设计期包两个包来发布,其中运行期包中包含了应 用程序编译实际需要的单元,而组件编辑器、属性编辑器这些专门为 IDE 设计 期编写的代码在应用程序的 exe 中

youxiazzz12的专栏 1987

Far planner 部署真实小车 & 树莓派部署lego_loam

今天开一贴Far planner的部署,也算是lego loam的部署吧 因为state_estimation用的是lego loam小车底盘: 轮趣的mini差速底盘外加多一层钢板,中间层用来放velodyne的电池(小的电池还没到,大的电池塞不进去目前)和velodyne信号盒子。前面还可以加一个相机。底层用来放小车的电池和马达等设备了,底层不用动。最上面一层用来安装velodyne16线雷达,需要额外钻孔(如果买轮趣的话可以找老板钻个孔?我也不确定,我自己钻的)。 雷达固定螺丝用的是 1/4-20*3

博客 4303

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

weixin_45735391的博客 6万+

delphi - bpl与dll之关系-创建于使用BPL包

来自:http://apps.hi.baidu.com/share/detail/519749 第一部分:有关包的介绍 一般我们编写编译一个DELPHI应用程序时,会产生一个EXE文件,也就是一个独立的WINDOWS应用程序。很重要的一点:区别于Visual Basi

lgwias的专栏 1490

手把手教你玩转CPU微架构专栏--​​​​1.5 工具准备:用Gem5模拟器“看见”微架构(安装、基础仿真命令)​

本文介绍了如何使用Gem5模拟器进行微架构学习和实验。Gem5是一款支持多种指令集的开源微架构模拟器,可模拟CPU流水线、缓存等核心组件。文章详细说明了在Ubuntu和macOS上安装Gem5的步骤,包括依赖安装、源码编译和验证方法。通过一个简单的加法指令测试程序,演示了如何运行基础仿真并解读输出日志,包括指令执行流程和性能统计数据。此外,还提供了两个实战实验:修改L1缓存大小和观察分支预测失败,帮助读者理解微架构参数对性能的影响。最后指出Gem5是学习微架构的"显微镜",能直观观察指令

xiaoheshang_123的博客 141

Delphi编码标准——包命名 (转)

Delphi编码标准——包命名 (转)[@more@]包命名XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" /> 1 运行期...

csd3176的博客 138

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Delphi有关包的介绍

第一部分:有关包的介绍一般我们编写编译一个DELPHI应用程序时,会产生一个EXE文件,也就是一个独立的WINDOWS应用程序。很重要的一点:区别于Visual Basic,DELPHI产生的是预先包裹的应用程序是不需要大量的运行库(DLLs)。假设:打开Delphi默认的工程(只有一个空白form),F9她将编译生成一个大约295 KB (Delphi 5)的可执行文件。然后打开Project

intelsong的专栏 1077

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系

一、Delphi中各种文件的介绍,及其关系。 OXC: ActiveX控件。会被安装到某一个组件包DPK中,在Imports中会创建PAS、DCU、DCR三个文件。 DLL: 动态链接库文件,它的Exports exports既可以写在工程文件里面,也可以写在Unit里面,没有区别。 DPK: 组件包文件,它是由多个组件(PAS)集合而成的。 BPL: 包裹文件,其实就是DLL文件,只是在

junjle的专栏 678

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

DELPHI下自定义包的作用,开发以及包文件的安装配置位置

From:http://www.cnblogs.com/dingjie/articles/199136.html 充分发挥包的作用 本章要点: n        为何要用包 n        为何不用包 n        包的类型 n        包文件 n        使用运行期包 n        把包安装到Delphi IDE中 n        创建包

ksrsoft的专栏 2366

Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系。

DCP ,BPL分别是什么文件,起什么作用?你在DELPHI中建立一个package然后保存一下,看看. bpl和Dll比较相似.只是BPL是BORLAND自己弄出来的东西!!!调用也和调用DLL相似,loadpackage()...DCP:delphi编辑软件包;一种包含关于被编译进软件包当中的代码符号信息的文件。 这种文件并不包含编译代码,这些代码实际上存贮在dcu或bpl文件中; BPL...

weixin_34092455的博客 162

delphi 有关包的介绍

(摘自)  第一部分:有关包的介绍 一般我们编写编译一个DELPHI应用程序时,会产生一个EXE文件,也就是一个独立的WINDOWS应用程序。很重要的一点:区别于Visual Basic,DELPHI产生的是预先包裹的应用程序是不需要大量的运行库(DLL's)。 假设:打开Delphi默认的工程(只有一个空白form),F9她将编译生成一个大约295 KB (Delphi 5)的可执

houjbf的专栏 626
上一篇: 百姓语录
下一篇: 页面内容导入Excel
dickc
博客等级 码龄23年 2粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值