gpt4 book ai didi

delphi - 在Delphi包中 "implicitly imported"总是坏事吗?

转载 作者:行者123 更新时间:2023-12-03 14:34:44 25 4
gpt4 key购买 nike

尝试将我的包裹重新排列为一组 TFrame-descendent components ,我发现似乎有必要将我的一些实用程序 TFrame 后代与使用它们的对话框窗体分开,主要是因为前者作为真正的组件注册到调色板,并且有时这似乎使 IDE 与使用它们的对话框形式。对话框表单依次由非可视组件调用,这些组件是第三个包的一部分。 到目前为止,这似乎构成了编译器的大部分 dependency-related complaints/困惑消失了。 (不过,我还没出去)。

使用对话框表单编译包(调用框架)时,我收到警告“Unit 'MyFrames' 隐式导入到包 'MyDialogForms' 中”

鉴于它显示为编译器警告,我很久以前就得到了这样的印象:“隐式导入”单元通常不是一件好事。是否有具体情况并非如此?即,在哪里隐式导入一个单元是可以的,和/或适当的做法?...如果是的话,那些具体情况是什么?

最佳答案

问题是这样的:

您的计划中的单元只能有一份副本。如果您尝试通过包加载同一单元两次,则会引发异常,并且包不会第二次加载。避免这种情况的方法是构建您的包,以便在其中多个包中不使用任何单位。

您编译的每个单元的代码都必须位于包中。编译器将从您在 contains 部分中声明的所有单元开始,但这些单元使用的任何其他单元也必须进行编译,以便可以访问,除非这些单元包含在另一个包中它列在要求下。这些额外的东西是“隐式导入”的单位。问题是,它们是隐式导入的,没有在包含部分明确说明,它们会方便地显示在右侧的项目管理器中。这意味着您可能没有注意到您的设备位于一个包裹中,而最终将其放入另一个包裹中。然后,当您尝试运行程序并加载包时,事情就会崩溃。这就是编译器警告您的原因。

这是一个警告,而不是错误,这是有原因的。只要您了解系统的工作原理,使用隐式导入在技术上是安全的。请记住,无论您是否声明,这些单位最终都会出现在包装中。但话又说回来,由于无论您是否声明它们,它们最终都会出现在那里,因此正式添加它们可能会更简单,这样可以省去麻烦。

关于delphi - 在Delphi包中 "implicitly imported"总是坏事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215664/

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