Delphi, 如何在两个不同的包中安装同名组件

Delphi, How to install a component with the same name in two different package

我需要安装两个不同的组件包,第一个使用BDE连接,第二个使用FireDAC连接,它们都包含一个名为"TKsAnalExpr"的组件,它包含在一个名为[=的单元中27=].

我正确安装了其中一个包,但是当我尝试安装第二个包时,Delphi 显示此错误消息:

Registration procedure, Kactus@UAnalExpr.Register in package C:\Entorno Delphi XE3\BPL\Kactus.bpl raised exception class EFilerError: Component TKsAnalExpr can't be registered by package kactus.bpl because it has already been registered by package KactusOP.bpl

我使用命名空间更改了单元的名称,例如分别为 PkgeBDE.UAnalExprPkgeFireD.UAnalExpr

但是当我再次尝试安装第二个包时,它显示了与上面相同的错误消息。

我正在使用 XE3 Upd 1 和 FireDAC 8.0.5。

PD:如果有人想知道,"AnalExpr" 代表 "Analizador de Expresiones"。呵呵

简单地说,不能有两个同名的注册组件。特定框架(VCL 或 FMX)中的组件只有一个命名空间。

考虑流式处理框架如何在 .dfm 文件中解决类似的问题

object MyComponent1: TMyComponent

它知道它需要实例化TMyComponent的一个实例。因此它在 class 注册表中查找名称为 TMyComponent 的 class。如果可能有两个 class 具有相同的名称,那么该查找将毫无意义。

您必须确保注册组件的名称是唯一的。