【发布时间】:2016-09-13 16:45:25
【问题描述】:
我正在使用 Delphi 7(我知道它很古老),我对我根据需要创建并在完成后销毁的表单有点困惑。
从我的主表单中,我创建了另一个请求用户名和密码的表单。新创建的表单属性等包含在另一个单元中,并包含在 Uses 子句中。
在我的主要表单中,我以前“拥有”以下代码;
var
MyOtherForm: TMyotherform;
Begin
MyOtherForm := TMyotherform.create(Nil);
{ Then I do stuff - blah blah }
MyOtherForm.free;
End;
我的问题是,当我在我的主单元中删除 MyOtherForm 的声明时,它仍然可以正常工作。例如;
{ var // removed
MyOtherForm: TMyotherform; // removed }
Begin
MyOtherForm := TMyotherform.create(Nil);
{ Then I do stuff }
MyOtherForm.free;
End;
同样的结果,表单像往常一样被创建并被销毁。我无法理解的是为什么。过去我在主单元中声明我的表单是否做错了,还是在单独的单元中声明就足够了?
【问题讨论】:
-
很可能
MyOtherForm被声明为包含TMyotherform的单元中的全局变量。当您向项目添加新表单时,默认情况下会发生这种情况。 -
你在其他地方声明了这个变量。 Search 为它。
-
你在范围内的某个地方(我们不能告诉你确切的位置)。使用“查找声明”功能。
-
它仅在其他单元中声明,在项目内的任何其他文件中均未提及。我想说塞巴斯蒂安也是正确的,它在包含它的单元中是全局的。我不知道这是否足够,认为它必须在调用单元中声明。
-
回复:做错了 - 可能是的。如果您在提供的代码之外的其他地方使用此变量,那么您可能会覆盖一些有意义的数据。如果不是 - 删除外部声明,使用尽可能窄的范围 - 本地的。