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.UAnalExpr
和 PkgeFireD.UAnalExpr
。
但是当我再次尝试安装第二个包时,它显示了与上面相同的错误消息。
我正在使用 XE3 Upd 1 和 FireDAC 8.0.5。
PD:如果有人想知道,"AnalExpr" 代表 "Analizador de Expresiones"。呵呵
简单地说,不能有两个同名的注册组件。特定框架(VCL 或 FMX)中的组件只有一个命名空间。
考虑流式处理框架如何在 .dfm 文件中解决类似的问题
object MyComponent1: TMyComponent
它知道它需要实例化TMyComponent
的一个实例。因此它在 class 注册表中查找名称为 TMyComponent
的 class。如果可能有两个 class 具有相同的名称,那么该查找将毫无意义。
您必须确保注册组件的名称是唯一的。
我需要安装两个不同的组件包,第一个使用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.UAnalExpr
和 PkgeFireD.UAnalExpr
。
但是当我再次尝试安装第二个包时,它显示了与上面相同的错误消息。
我正在使用 XE3 Upd 1 和 FireDAC 8.0.5。
PD:如果有人想知道,"AnalExpr" 代表 "Analizador de Expresiones"。呵呵
简单地说,不能有两个同名的注册组件。特定框架(VCL 或 FMX)中的组件只有一个命名空间。
考虑流式处理框架如何在 .dfm 文件中解决类似的问题
object MyComponent1: TMyComponent
它知道它需要实例化TMyComponent
的一个实例。因此它在 class 注册表中查找名称为 TMyComponent
的 class。如果可能有两个 class 具有相同的名称,那么该查找将毫无意义。
您必须确保注册组件的名称是唯一的。