试图重新安排我的包裹为一组 TFrame-后裔组成, 我发现它似乎有必要打破了我的一些实用工具TFrame后代分开的对话形式,使用他们,主要是因为前者的登记色作为真正的成分,这似乎混淆IDE有时候,相对于对话形式,使用它们。对话的形式依次是所谓的非可视成分,这一部分的第三个包装。这个, 迄今为止, 似乎使大多数的编译器 依赖性有关的投诉 /混乱走。(我没有出来,但是).

当汇编的包装与对话的形式 (其中呼吁的框架),我得到的警告 "单元'MyFrames'隐含地进口到包MyDialogForms'"

鉴于它显示了作为一个编译器的警告,我已经很久以前得到的印象是,"含蓄地进口"的一个单元是一般不是一件好事。是否有具体实例,是不是?即其中隐含的进一单元确定和/或适当的做法?...如果是的话,什么是那些特定的情况下?

有帮助吗?

解决方案

问题在于:

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

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

这是一个警告,而不是错误,原因。只要您了解系统的工作原理,使用隐式导入在技术上是安全的。请记住,无论您是否申报,这些单位都会在包裹中结束。但话又说回来,因为他们无论你是否声明它们都会在那里结束,只是正式添加它们并为自己省去麻烦可能更简单。

其他提示

+1 梅森的答案.的地方,含蓄地-进口的单位成为一个问题是在大型项目,它成为呈指数更多的难以跟踪的单位有联系的中从无论.

我找到最好的办法是迄今为止,有一个文件夹每件,该文件夹中包含的所有文件。如果我看到一个"隐含的进口"警告,我要么添加所需要的包装,或加入该单元的软件包。因此,所有单位都指定的包含有他们和他们都在同一个文件夹。我永远不会增加文件夹以搜索的道路,因为每个项目都知道关于它的所有文件。

该结构是真的不是非常难以维持,它可以保护你的问题在不同的单位包含不同版本的文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top