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

时间:2015-04-13 15:46:57

标签: delphi package components vcl bpl

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

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

  

注册程序,Kactus@UAnalExpr.Register包C:\ Entorno Delphi XE3 \ BPL \ Kactus.bpl引发异常类EFilerError:组件TKsAnalExpr不能由包kactus.bpl注册,因为它已经注册通过包KactusOP.bpl

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

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

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

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

1 个答案:

答案 0 :(得分:2)

简而言之,您不能拥有两个具有相同名称的注册组件。特定框架(VCL或FMX)中的组件有一个命名空间。

考虑流式框架如何在.dfm文件中解析类似的东西

object MyComponent1: TMyComponent

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

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