H2161 重复资源[一个VCL项目可以有2个类名相同但命名空间不同的表单吗?]

2024-05-19

我尝试在 2 个不同的命名空间中创建具有相同类名的 2 个表单

FirstNameSpace.ExampleFormName.TExampleFormName
SecondNameSpace.ExampleFormName.TExampleFormName

虽然可以编译,但我得到以下提示

[dcc32 提示] H2161 警告:重复资源:类型 10 (RCDATA),ID 示例格式名称;文件 保留 FirstNameSpace.ExampleFormName.TExampleFormName.DFM 资源; 文件 SecondNameSpace.ExampleFormName.TExampleFormName.dfm 资源 被丢弃。

并且在引用时程序崩溃TExampleFormName.

看起来没有足够的信息让链接器正常工作。

有什么办法可以让这个工作吗?


否。正如错误的性质和内容所示,关联表单文件 (.dfm) 中的类名引用不是命名空间限定的,相应的资源 ID 也不是。

表单类名在应用程序内/跨应用程序必须是唯一的。

类似地,DFM 中引用的组件的类名(包括放置在表单上的控件)也必须是唯一的,因为它们也不是命名空间限定的。

为了促进/确保唯一的组件/控制类名,供应商和组件开发人员采用了前缀系统。也就是说,由供应商或组件套件等生成的每个类除了其常用名称之外还将共享一个公共前缀。

例如,如果一家名为 ACME 的公司要提供增强的标准 UI 控件库,他们可能会将其命名为:

TAcmeEdit
TAcmeButton
TAcmeListbox
etc

为了将它们与标准(无前缀)VCL 控件或其他供应商控件(使用不同的前缀)区分开来。

Delphi 前缀注册表 http://delphiprefix.href.com/是一个社区运行/支持的网站,维护这些前缀的列表(最常用于控件/组件库的开发人员,以确保他们选择尚未使用的前缀)。

我不确定 FMX 应用程序资源是如何处理的may在那种情况下是可能的。但只是因为我不知道doesn't工作并不意味着它does.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

H2161 重复资源[一个VCL项目可以有2个类名相同但命名空间不同的表单吗?] 的相关文章

  • 使用普通画布/文本输出更新LayeredWindow

    有没有一种方法可以使用画布在表单上绘图 然后使用 updatelayeredwindow 这样表单就不可见 但文本可见 就像只显示文本的半透明表单一样 如果没有 那么有没有办法只用画布 opengl directx 制作某种半透明形式 我想
  • 如何在Delphi XE中通过名称获取类类型引用?

    我实际上正在尝试使用 Rtti 来实现通用方法调用程序 它应该像这样工作 我将提供类名 方法名和参数 调用者将通过调用此类的指定方法来完成其工作 因此 我需要类引用才能获取其 Rtti 信息并寻找我想要调用的方法 有没有办法在不实现我想要使
  • 获取 TransactSql 批处理中的语句数计数

    对于不使用 Delphi 的读者 虽然以下内容是根据 Delphi 编码来表达的 但我的实际技术问题不是特定于 Delphi 的 而是关于如何找出 Sql Server 如何 理解 TransactSql 批处理提交给它 TAdoQuery
  • Delphi线程死锁

    我有时会在销毁某些线程时遇到死锁问题 我尝试过调试该问题 但在 IDE 中调试时似乎从未存在死锁 可能是因为 IDE 中的事件速度较低 问题 当应用程序启动时 主线程会创建多个线程 线程始终处于活动状态并与主线程同步 完全没有问题 当应用程
  • delphi 变量值在循环中的线程中发生变化

    我的代码正在运行一个 for 循环来处理一些数据 如下所示 procedure printValue Value Integer begin TThread Synchronize TThread Current procedure beg
  • 在运行时按需更改组件类

    我的问题与这里的想法类似 替换delphi中的组件类 https stackoverflow com q 4685863 937125 但我需要改变一个specific按需组件类 这是一些伪演示代码 unit Unit1 TForm1 cl
  • 开源 Delphi 包可使用哪些项目选项?

    我写了一些 Delphi 代码 想在 GitHub 上分享 所有代码都根据需要包含在运行时和设计时包中 每个项目有许多项目选项需要设置 输出目录 搜索路径 编译选项等 我设法找到了一些适合我的情况的默认选项 但阅读此处的其他问答很明显有多个
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • 我如何在Delphi中处理事件?

    例如 我有一个程序 在单击 Button1 后执行某些操作 如果没有 Button1Click 中的代码 如何处理按钮的 onclick 事件 我需要为 Button1 动态添加事件 unit Unit1 interface uses Wi
  • 有人用CrossKylix进行真正的跨平台开发吗?

    新版本克罗斯凯利克斯 http crosskylix untergrund net 两周前更新过 即使 Kylix 已经停产很久了 但它似乎仍然被一些 Delphi 开发人员使用 有人在 Windows 和 Linux 的跨平台开发中成功使
  • 如何在调试器中显示 TStringList 的内容?

    我想在调试应用程序时显示 TStringList 的全部内容 相反 我只是得到指示 Flist 仅显示地址 如果您使用的是 Delphi 2010 或更高版本 调试器允许使用调试可视化工具 http docwiki embarcadero
  • 不断断点?如何去除它们?

    我下载了一个用Delphi 2009制作的项目 这也是我使用的 但是有一个断点我无法删除 如果我尝试删除它 它会在程序执行后再次执行 我在其他调试器中遇到了这样的事情 称为硬件断点 但这并不重要 如何删除断点 EDIT Article ht
  • 为什么未初始化的指针会导致内存访问冲突接近 0?

    据说often 但并非总是如此 当你在接近于零的内存位置 比如 89 美元 获得 AV 时 你就有了一个未初始化的指针 但我也在 Delphi 书籍中看到了这一点 嗯 或者它们都是由同一作者写的 Update 引自 Bob Swart 等人
  • delphi中如何实现多重继承?

    我正在对一个旧库进行完全重写 我不确定如何处理这种情况 为了便于理解 大家都欢呼自行车类比 我有以下课程 TBike 自行车本身 TBikeWheel 自行车的一个轮子 TBikeWheelFront and TBikeWheelBack
  • TObjectList.Contains 导致 Delphi 2009 中的访问冲突

    在 Delphi 2009 中 到目前为止 我在泛型方面没有遇到大问题 使用 Generics Collections 列表 没有特殊的泛型功能 现在我发现这段代码会在访问的行中导致AVMyList Contains 如果我声明 TMyLi
  • 如何在运行时(Delphi/Windows)程序中添加代码?

    我正在Windows XP Delphi 7上工作 我需要在正在运行的程序中添加一些过程 或函数 并且我不想在完成后再次重新编译它 我只有一个具有 5 个功能的主机应用程序来发送不同类型的警报 但是还有其他新的警报类型 所以我必须执行新的功
  • 查找字符串是否在列表中的最佳方法(没有泛型)

    我想做这样的事情 Result MyString in string1 string2 string3 string4 这不能与字符串一起使用 我不想做这样的事情 Result MyString string1 or MyString st
  • 为什么 Delphi 变体不能保存对象?

    为什么 Delphi 变体不能保存对象 更重要的是 这种限制背后的原因是什么 你绝对可以storeVariant 变量中的对象 只需将其转换为 NativeUInt 无论如何 对象只是一个指针 obj TObject Create v Na
  • 将delphi stringgrid导出到excel

    我正在尝试将数据从delphi 7 中的stringgrid 导出到microsoft excel 我一直在使用这段代码来做到这一点 objExcel TExcelApplication Create nil objExcel Visibl
  • TThread.resume 在 Delphi-2010 中已弃用,应该在什么地方使用?

    在我的多线程应用程序中 I use TThread 挂起 and TThread resume 自从将我的应用程序移至 Delphi 2010 后 我收到以下警告消息 DCC 警告 xxx pas 277 W1000 符号 Resume 已

随机推荐