尝试重新安排一套
TFrame-descendent components的软件包,我发现似乎有必要打破我的一些实用程序TFrame后代与使用它们的对话框形式分开,主要是因为前者被作为真实组件注册到调色板,似乎有时混淆IDE与使用它们的对话框。对话窗体依次由非可视化组件调用,它们是第三个包的一部分。到目前为止,这似乎使编译器的大部分
dependency-related complaints /混乱消失了。 (我还没出来,但是)。
当使用对话框窗体(调用框架)编译包时,我收到警告“单元”MyFrames“隐式导入包”MyDialogForms“”
鉴于它显示为编译器警告,我很久以前就得到一个印象,即“隐式导入”一个单位通常不是一件好事。有没有特定的情况呢?即隐含地输入单位是否可行,和/或适当的做法?如果是,这些具体情况是什么?
解决方法
以下是问题:
您的程序中只能有一个单元的副本。如果您尝试通过程序包加载相同的单元两次,它将引发异常,并且程序包将不会再次加载。避免这种情况的方法是构建您的软件包,以便在多个软件包中不使用任何单元。
您编译的每个单元的代码必须在包中。编译器将从您在包含部分中声明的所有单元开始,但是这些单元使用的任何其他单元也必须进行编译,以使其可以访问,除非这些单元包含在根据需要列出的另一个包中。这些演员是“隐含进口”单位。麻烦的是,它们是隐含地导入的,在包含部分中没有明确说明,他们可以方便地在项目经理中右边显示。这意味着您可能不会注意到您的设备在包中,最后将其放在另一个包中。然后,当您尝试运行程序并加载程序包时,会出现故障。这就是为什么编译器警告你的。
这是一个警告,而不是错误,因为这个原因。只要您了解系统的工作原理,使用隐式导入技术就安全。只要记住,无论您是否声明,这些单位都在包装中。但是再一次,由于他们结束了,无论你是否声明,只要正式添加它们并节省自己的麻烦,可能更简单。