☰
Delphi 10.1 Berlin 安装 Raize 组件包全指南:顺序、路径与排错
2026/10/24 14:02:48 网站建设 项目流程

简介:Raize_6.1.1.12_DX10_1_Berlin_cocashu修正版是一份针对 Delphi Berlin(即 DX10.1)环境的 Raize 组件库安装资源,重点修正了原版 pas 文件错误导致的编译失败问题。资源面向使用 Delphi 10.1 Berlin 并需要集成 Raize 控件的开发者,也适合需要查看组件源码或进行二次封装的进阶用户。按说明将文件解压到 C:\Program Files\Raize\ 后,执行 RC6\Source 目录下的 !Build_RC6.cmd 即可完成环境配置,作者亲测可用。包体共包含 956 个文件,大小约 10.74MB,涵盖 hpp 头文件、pas 源文件、dcu 预编译单元、dfm 窗体布局、bmp 图像素材以及 dpk/dproj 工程文件和 cmd 构建脚本,结构清晰,便于按需选用。压缩包内还附有安装说明和预先调整好的配置文件,能帮助使用者快速避开组件编译时的常见坑点。目前已有 330 人学习下载,适合作为 Delphi Berlin 环境下 Raize 组件安装与使用的可靠参考。

1. Raize 6.1.1.12 在 Delphi 10.1 Berlin 上装不上的真正原因:版本、顺序与路径

拿到 Raize_6.1.1.12_DX10_1_Berlin_cocashu修正版 这份安装包时,我第一反应不是解压,而是先确认它对应的是哪个 Delphi 版本。Raize6 的 DX10.1 安装说明,关键词其实只有一个:10.1 Berlin。这个版本写错一个数字,组件面板就会在装完后一片空白,IDE 启动还可能直接弹“Can't load package”。装 Raize 和装普通控件不一样,它不是编译完一个包就结束,而是运行期包、设计期包、Library Path 三条线要同时落位。很多人装不上,真不是包坏了,而是把设计期包当运行期包装,或者编译顺序搞反了,再不就是路径里有中文把编译脚本坑了。这篇笔记就是留给还在 10.1 Berlin 上维护老项目的开发者看的,照着顺序走,十分钟把它装进 IDE。

2. 安装前准备:先核对版本号再解压

2.1 确认 IDE 版本、编译器和包名的对应关系

Delphi 10.1 Berlin 在 IDE 的 About 界面里显示版本号为 24.0,对应条件编译指令是 VER240。Raize 6.1.1.12 的 DX10_1 目录,顾名思义就是为 10.1 Berlin 准备的,包文件命名里一般会体现 10_1,少数使用 24 这个内部代号。拿到安装包先不要急着解压,先把目录名看清楚,确认不是 DX10_2 或 DX10_3。我曾经装错过一次 10.2 的包,IDE 重启后直接报二进制格式错误,整个组件面板消失,最后只能靠清理注册项救回来,属于最不值得踩的坑。

确认版本还有一个土办法:用记事本打开 .dpk 包文件,看头部引用的编译器版本指令。如果是 VER240,那就是给 10.1 Berlin 用的;如果是 VER250 或 VER260,那说明这份包是在别的 Delphi 版本下编译的,不要期待它能直接装进 10.1 Berlin。Raize 6.1.1.12 修正版之所以叫修正版,通常是在原版基础上补过编译顺序或高 DPI 下的图标问题,它并不改变版本对应关系。修正版包里一般会附一个说明文件,安装前建议先读一遍。

2.2 解压位置与权限:别放进 Program Files

Raize 组件包和大多数 Delphi 控件一样,源码与 .dpk 包文件需要保持路径稳定,因为编译产生的 .dcu 会写入包目录或 Lib 目录,之后 Library Path 引用的是绝对路径。一旦解压到 Program Files 这类系统保护目录,文件写入会被 UAC 拦下,编译时报拒绝访问,这是新手最容易遇到的坑,而且是那种看起来莫名其妙、实际原因很简单的坑。

我一般把 Raize 放在 C:\Raize_6.1.1.12 或者 D:\Raize\6.1.1.12,路径里不要带中文、不要带空格。带空格路径在少数批处理脚本里会被截断,IDE 本身能处理,但修正版自带的编译脚本不一定能处理。解压后大致是这样一个结构:

目录 / 文件作用
Packages存放 .dpk 包文件,运行期包与设计期包分开命名
Lib编译输出的 .dcu 和运行时 bpl 默认落在这里
Sources组件源码 .pas,之后 Library Path 需要指向这里
Demos示例工程,验证阶段可以直接打开来测试

不同修正版的目录名可能有细微差别,以包内说明为准。这里补充一条经验:解压完先不要打开 Delphi,先把目录整个移动到位,因为一旦编译过,再移动整个目录,之前的 dcu 和 bpl 路径全部作废,又得重新编译一遍。

2.3 备份现有 IDE 包配置:给后悔药留个位置

装 Raize 之前,我强烈建议先备份当前 IDE 的包配置。Delphi 的已安装包清单不是存在某个普通配置文件里,而是写在用户配置目录的 BDS\24.0 下的 Known IDE Packages 注册项中。装新组件包之前,打开注册表编辑器,把 BDS\24.0 下和 Packages 相关的项导出成 .reg 文件保存到磁盘,万一装坏了可以直接导回去。

这个操作是血泪经验换来的。有次我在一个 10.1 Berlin 环境里同时装了 Raize 两个版本,IDE 每次启动都弹找不到 bpl,组件面板也坏了,最后就是靠这份备份导回去才恢复。备份文件很小,几十 KB,但能省下半天排查时间。导出时注意把 HKCU 和 HKLM 两处的 BDS\24.0 都导出,不同组件包注册的位置不完全一样。

2.4 看修正版自带的批处理脚本在做什么

很多修正版会带一个 Install.bat 或 Build.bat。不要直接双击运行,先打开看内容。我见过的脚本里,有些会先清理当前已编译的 dcu 文件,再调用命令行编译器重新编译;如果此时 Delphi IDE 正开着,并且占用了某些 bpl 文件,脚本会在清理或复制阶段中途失败,报文件被占用。

正确顺序是先关闭 Delphi IDE,再单独运行脚本;或者干脆不用脚本,完全参照脚本里的编译顺序,在 IDE 里手动编译。混用两种方式是翻车高发区:脚本编到一半切到 IDE 手动编译,经常留下编译一半的 dcu,后面装设计期包时各种报错都来了。确定走哪条路之后,就一条路走到底。

3. 编译与安装:先运行期包,后设计期包

3.1 运行期包与设计期包的分工要先搞清楚

Raize 的包文件命名规则:不带 D 后缀的是运行期包,负责提供组件实现代码,程序编译和发布时依赖它;带 D 后缀的是设计期包,负责把组件图标注册到 IDE 的组件面板,只在 IDE 里加载。安装顺序因此是固定的:先编译运行期包,让 bpl 和 dcu 落地,再打开设计期包点击 Install。顺序反了,设计期包找不到运行期包里的类,编译时直接报找不到 RzButton 之类的引用。

如果无法从文件名分辨哪个是设计期包,就打开 .dpk 看 Requires 子句。设计期包几乎都会在 Requires 列表里引用刚刚编译好的运行期包,而运行期包的 Requires 里只有 VCL 和 RTL 这些 IDE 自带包。这个判断方法对所有 Delphi 第三方组件通用,不只限于 Raize。

3.2 在 IDE 里编译运行期包

操作按下面四步走:

  1. 关闭可能占用 bpl 的其他 Delphi 工程,打开 Delphi 10.1 Berlin。
  2. File > Open,定位到 Packages 目录,选择不带 D 后缀的 .dpk 文件。
  3. 在 Project Manager 里右键该包节点,选择 Compile。
  4. 编译完成后确认 Messages 窗口没有 E2003 或类似报错。

编译前我习惯先打开 Project > Options,把输出目录指到包目录下的 Lib 文件夹。这样做的目的是让 dcu 位置可控,之后配置 Library Path 时不用写一堆分散的路径,排查问题也容易。有些修正版默认把输出指到了系统 BPL 目录,这种也能用,但换机器迁移时路径容易对不上。

编译成功的标志是 Messages 窗口出现 Build OK 或 Done 字样。这一步千万不要顺手点 Install,运行期包没有 Install 选项,强行安装会报“Cannot install a runtime package”,到时候还得回头查是不是点错了文件。

3.3 安装设计期包并检查组件面板

运行期包编译通过后的下一步:

  1. File > Open 打开那个带 D 后缀的 .dpk 文件。
  2. 在 Project Manager 里右键包节点,选择 Install。
  3. 弹出安装成功的提示后,组件面板应该出现一个名为 Raize 的页签,页签里是一整套 Rz 开头的组件。

如果组件面板没出现 Raize 页签,先不要急着判定失败。有时候要新建或切换一个 Form 才会刷新组件的显示;有时候是 IDE 缓存了组件列表,重启 IDE 后页签才出现。这就是为什么验证一定要放在最后统一做,而不是装到一半就下结论。我还遇到过页签出现了、组件却拖不出来的情况,这种多半和后面要说的 Library Path 配置有关。

3.4 脚本安装也是这条路,只是自动化了

决定用批处理脚本安装的话,逻辑和手动是一样的。脚本一般会依次完成:清理旧 dcu、编译运行期包、复制 bpl 到系统目录。但脚本很难替你做设计期包的 Install 动作,因为这个操作依赖 Delphi IDE 的交互环境,批处理无法稳定模拟。所以脚本跑完后大概率还是需要手动回到 IDE 打开设计期包点一次 Install,这一步省不了。

如果你在 32 位环境下安装,不要被网上一些“64 位包”的说法干扰。Delphi 10.1 Berlin 的 IDE 本身是 32 位程序,组件包也是面向 IDE 加载的,不存在 64 位 IDE 安装包这种东西。出现“64 位”字样的说明,多半指的是运行时库面向 Win64 目标平台的编译支持,跟 IDE 安装没有关系。

4. 环境配置:Library Path 与运行时包缺一不可

4.1 Library Path:不加就是 File Not Found

安装完成后新建项目,组件面板里能看到组件,拖到 Form 上也没问题,但一编译就报 File not found 或者找不到 dcu,这是 Library Path 没配。设计期包的 Installation 只解决 IDE 面板显示,不负责给项目编译提供源码路径,这是两个完全独立的配置。

打开 Tools > Options > Delphi Options > Library,在 Library path 里追加两个路径:Raize 的 Sources 目录和 Lib 目录,中间用分号分隔。加 Sources 是因为某些组件在同一工程里既有编译期源码引用又有设计期表现;加 Lib 是为了让编译器能找到已经编译好的 .dcu 文件。路径写好后点输入框右侧的省略号按钮,确认路径真实存在,然后再重启一次 IDE。

这里有个细节容易被忽略:Library Path 配置完成后,IDE 的代码补全有时不会立刻刷新。重启 IDE 是最稳妥的方式,不要省这一步。我见过有人在 Library Path 里写了一个不存在的路径,IDE 编译时静默跳过,结果还是报找不到单元,反过来怀疑包没装好,来回折腾半天。

4.2 运行时包的选择:压进 exe 还是动态引用

Raize 运行期包有两种使用方式。第一种是静态链接:在 Project Options 里不勾选 Use runtime packages,组件代码直接编译进 exe,部署时不需要额外带 bpl 文件。第二种是动态引用:勾选 Use runtime packages,并在包列表里加入 Raize 对应的 bpl 名称,exe 体积会小一些,但部署时必须把对应 bpl 一起带上。

维护老项目时我一般选静态链接。Raize 的 bpl 依赖 VCL 运行时包,如果系统里同时存在多个版本或其他组件包的 bpl,动态引用场景下经常出现启动时弹找不到 bpl 的错误,而这个错误对话框一闪而过,用户截图都截不到,排查效率极低。静态链接把一切压进 exe,部署现场少一个变量。

但如果项目本身已经启用了 runtime packages,那就不要为了 Raize 单独改成静态,整个项目统一用动态最稳,混用会在运行时出现类重复注册的报错,那个报错文本加长都看不懂。顺着报错看下去会发现是同一份类被加载了两次,根源就是混用。

4.3 版本残留:把旧的 dcu 和 bpl 清干净再装

老项目之前用过 Raize 5.x,这次装完 6.1.1.12 以后编译旧代码报类型不匹配,大概率是旧 dcu 残留。Delphi 编译时对 dcu 的查找顺序是 Library Path 优先,如果旧版 dcu 还躺在某个目录里,编译器会优先命中旧文件,新装的和旧的打架,报出来全是类型转换错误。

清理按这个顺序来:

  1. 到 Raize 安装目录下搜索 *.dcu 和 *.bpl,确认没有旧版本残留文件。
  2. 到用户目录下 BDS\24.0 对应的 bpl 缓存目录,搜索 Rz*.bpl,有就删除。
  3. 在 IDE 的 Component > Install Packages 里看 Raize 条目是否存在两个版本,先移除旧版再装新版。
  4. 确认干净后,重新编译一次运行期包,再安装一次设计期包。

清理顺序不要颠倒。先删文件、后动注册项,否则 IDE 启动时还会尝试加载已经被删掉的包,报错比原来还难看。这一步做完再回去编译旧项目,类型不匹配的报错通常会消失。如果还没消失,去工程的搜索路径里检查一遍,看有没有单独写死指向旧版 dcu 的路径,那种手动加的路径会绕过全局 Library Path,属于隐藏雷。

5. 安装排错:五个反复出现的坑

5.1 编译运行期包报 E2003

现象:点 Compile 后 Messages 窗口弹出 E2003,行号指向 Raize 源码里某个文件,代码看起来却没问题。

原因:多数情况是源码所在路径里有中文或空格,少数情况是 IDE 缓存了上一个版本的 dcu,导致新旧源码混编。E2003 这类序号错误经常被误判为源码损坏,实际上源码好好的,是环境问题。

解决:把整个 Raize 目录复制到一个纯英文、无空格的路径下重新编译,并在编译前删除 Lib 目录下所有 dcu 文件。这个动作我在不同机器上做过至少五次,每次都能解决。

5.2 设计期包 Install 按钮是灰的

现象:打开带 D 后缀的 .dpk 后,右键菜单里的 Install 是禁用状态,点不下去。

原因:打开错了包文件,某些修正版把运行期包的文件名也加了 D 后缀;或者当前 IDE 里已经加载了这个包,重复加载状态下 Install 会被禁用。

解决:对比 Requires 子句,确认它依赖了刚编译好的运行期包。然后到 Component > Install Packages 里搜索 Raize,如果已经存在就先 Remove 再回来重新 Install。这个问题最容易发生在安装脚本跑过一半之后,所以前面强调安装方式要二选一。

5.3 有 Raize 页签但组件是空白的

现象:IDE 重启后组件面板出现 Raize 页签,展开后没有组件图标,或者图标是一个空方块。

原因:设计期包注册成功了,但包依赖的某个 bpl 不能被 IDE 找到。常见于运行期包编译后没有复制到系统 BPL 目录,IDE 只加载到了设计期包,设计期包加载过程中找不到依赖,组件图标自然出不来。

解决:把 Lib 目录下生成的 Rz*.bpl 全部复制到系统 BPL 目录,重启 IDE。如果是高分屏下图标空白但组件能拖,那是 DPI 缩放问题,尝试关闭 IDE 的 DPI 缩放,或者确认装的是修正版里包含高 DPI 修复的那一份。

5.4 旧项目编译通过但 Form 打开空白

现象:编译没有任何报错,运行时整个 Form 是空白的,或者 IDE 设计界面提示 Class RzButton not found。

原因:项目里的 dfm 文件引用的是 Raize 5.x 的类名,而 IDE 里只注册了 6.1.1.12,dfm 里旧类名在设计期找不到对应的已注册类。这个现象在老项目里非常普遍,不是 Raize 6 装坏了,是新旧版本的类名变更没有被同步。

解决:用记事本打开 Form 的 .dfm 文件,检查 Rz 开头的对象类名,把旧版类名替换为安装包里实际提供的类名。dfm 文件默认是文本格式,直接查找替换即可;如果项目里 dfm 被配置成二进制格式,先转成文本再处理。替换前记得备份文件,这一步相当于给旧项目打补丁,改错了可以还原。

5.5 IDE 启动时报 Can't load package

现象:IDE 一启动就弹错误框,提示某个 Rz*.bpl 无法加载,附带类似“%1 is not a valid Win32 application”或“不是有效的 Win32 应用程序”的内容。

原因:这个报错基本可以断定包是在其他 Delphi 版本下编译的。误装了其他版本对应编译的 bpl,会让 IDE 在启动阶段尝试加载时就挂掉,连进入主界面的机会都没有。

解决:确认安装的是对应 10.1 Berlin 的版本,不要混装 10.2 或更高版本的包。如果已经误装,去 IDE 用户配置目录 BDS\24.0 下的已知包注册项,找到对应 Rz*.bpl 条目并删掉,然后在安装目录里把不匹配的 bpl 也清掉,重新编译运行期包后再装设计期包。操作时先关 IDE,改完再启动。这个问题每次都有人踩,原因就是下载时没核对路径里的 DX10_1 标记,顺手把别的版本也装进去了。

6. 装完怎么验证:新建一个 VCL 工程拖上 Rz 组件跑一遍

验证不是最后才做,而是每次装完立刻做。装完 Raize 6.1.1.12 后,我固定走四步,四步全过才算这套环境真的能用。

第一步,新建一个 VCL Forms Application,在 Project Options 里确认 Target Platform 是 32 位 Windows,并取消勾选 Use runtime packages,避免验证过程混入 bpl 路径问题。第二步,打开组件面板里的 Raize 页签,依次拖 TRzButton、TRzEdit、TRzMemo 到 Form 上,先看页签组件是否能正常落位。第三步,为按钮写一句代码调用组件:

procedure TForm1.RzButton1Click(Sender: TObject); begin // 向 RzMemo 写入当前时间,用来确认运行期包里的类真的可用 RzMemo1.Lines.Add(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now)); end;

这里用了 FormatDateTime,属于 RTL 标准函数,不依赖 Raize,真正要验证的是 RzMemo 和 RzButton 这两个类是否能正常实例化、是否能正确响应事件。第四步,按 F9 编译运行,点击按钮,窗口上的 RzMemo 中出现一行时间戳,说明运行期包和编译链都正常。如果 RzMemo 显示空白,优先查 Library Path 里两个目录的顺序和存在性。

顺带提醒,验证工程不要直接拿老项目试。老项目里残留的旧 Raize 引用会让验证结果失真,万一报错也分不清是新装环境的问题还是老项目自身的问题。每次装完任何 Delphi 控件,我都强制自己新建一个空工程拖一套组件跑一遍,确认之后再开始真正的迁移。这个习惯救过我很多次,希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询