3

我需要安装两个不同的组件包,第一个使用 BDE 连接,第二个使用 FireDAC 连接,它们都包含一个名为“TKsAnalExpr”的组件,它包含在一个名为“UAnalExpr”的单元中。

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

注册过程,包 C:\Entorno Delphi XE3\BPL\Kactus.bpl 中的 Kactus@UAnalExpr.Register 引发异常类 EFilerError: 组件 TKsAnalExpr 无法被包 kactus.bpl 注册,因为它已经被包 KactusOP.bpl 注册

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

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

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

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

4

1 回答 1

4

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

考虑流式传输框架如何在 .dfm 文件中解决此类问题

object MyComponent1: TMyComponent

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

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

于 2015-04-13T15:56:02.317 回答