gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:27:58 25 4
gpt4 key购买 nike

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

我正确安装了其中一个包,但是当我尝试安装第二个包时,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 的实例。因此它会在该类注册表中查找名为 TMyComponent 的类。如果可能有两个同名的类,那么该查找就没有意义。

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

关于Delphi,如何在两个不同的包中安装同名的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com