H2161 重复资源 [一个 VCL 项目可以有 2 个具有相同 class 名称但不同命名空间的表单吗?]
H2161 Duplicate resource [Can a VCL project have 2 forms with the same class name but different namespaces?]
我尝试在 2 个不同的命名空间中创建 2 个具有相同 class 名称的表单
FirstNameSpace.ExampleFormName.TExampleFormName
SecondNameSpace.ExampleFormName.TExampleFormName
虽然编译成功,但我得到以下提示
[dcc32 Hint] H2161 Warning: Duplicate resource: Type 10 (RCDATA), ID
TEXAMPLEFORMNAME; File
FirstNameSpace.ExampleFormName.TExampleFormName.DFM resource kept;
file SecondNameSpace.ExampleFormName.TExampleFormName.dfm resource
discarded.
并且程序在引用 TExampleFormName
时崩溃。
似乎没有足够的信息让链接器正常工作。
有什么方法可以实现吗?
没有。如错误的性质和内容所示,关联表单文件 (.dfm) 中的 class-name 引用不是命名空间限定的,相应的资源 ID 也不是。
表单 class-名称必须是唯一的 within/across 一个应用程序。
同样,class DFM 中引用的组件名称(包括放置在窗体上的控件)也必须是唯一的,因为它们也不是命名空间限定的。
对于promote/ensure 独特的component/control class 名称,供应商和组件开发人员采用了前缀系统。也就是说,供应商或一套组件等生产的每个 class 除了它们通常的名称外,还将共享一个公共前缀。
例如,如果一家名为 ACME 的公司要提供一个增强的标准 UI 控件库,他们可能会将它们命名为:
TAcmeEdit
TAcmeButton
TAcmeListbox
etc
为了将它们与标准(无前缀)VCL 控件或其他供应商控件(使用不同的前缀)区分开来。
The Delphi Prefix Registry 是一个社区 run/supported 网站维护这些前缀的列表(大多数用于 control/component 库的开发人员以确保他们选择一个尚未在使用).
我不确定 FMX 应用程序资源是如何处理的,在那种情况下可能是可能的。但仅仅因为我不知道它 不 工作并不意味着它 工作 .
我尝试在 2 个不同的命名空间中创建 2 个具有相同 class 名称的表单
FirstNameSpace.ExampleFormName.TExampleFormName
SecondNameSpace.ExampleFormName.TExampleFormName
虽然编译成功,但我得到以下提示
[dcc32 Hint] H2161 Warning: Duplicate resource: Type 10 (RCDATA), ID TEXAMPLEFORMNAME; File FirstNameSpace.ExampleFormName.TExampleFormName.DFM resource kept; file SecondNameSpace.ExampleFormName.TExampleFormName.dfm resource discarded.
并且程序在引用 TExampleFormName
时崩溃。
似乎没有足够的信息让链接器正常工作。
有什么方法可以实现吗?
没有。如错误的性质和内容所示,关联表单文件 (.dfm) 中的 class-name 引用不是命名空间限定的,相应的资源 ID 也不是。
表单 class-名称必须是唯一的 within/across 一个应用程序。
同样,class DFM 中引用的组件名称(包括放置在窗体上的控件)也必须是唯一的,因为它们也不是命名空间限定的。
对于promote/ensure 独特的component/control class 名称,供应商和组件开发人员采用了前缀系统。也就是说,供应商或一套组件等生产的每个 class 除了它们通常的名称外,还将共享一个公共前缀。
例如,如果一家名为 ACME 的公司要提供一个增强的标准 UI 控件库,他们可能会将它们命名为:
TAcmeEdit
TAcmeButton
TAcmeListbox
etc
为了将它们与标准(无前缀)VCL 控件或其他供应商控件(使用不同的前缀)区分开来。
The Delphi Prefix Registry 是一个社区 run/supported 网站维护这些前缀的列表(大多数用于 control/component 库的开发人员以确保他们选择一个尚未在使用).
我不确定 FMX 应用程序资源是如何处理的,在那种情况下可能是可能的。但仅仅因为我不知道它 不 工作并不意味着它 工作 .