我有一个用Delphi编写的控制台应用程序。 我看到我可以通过将它们分配给单元作用域来具有全局变量,但在控制台应用程序中,我不使用单位(从我已经理解它的形式)。Delphi中的全局变量
1
A
回答
13
不是,一个单位不等于一个表单。
单元是包含部分程序的模块。每个表单都是一个单独的单元,但单元不必包含表单。
每个单元都有一个接口部分和一个实现部分。在接口部分的声明是给使用单位中的所有单元可见:
unit A;
interface
var
GVar1 : Integer;
implementation
var
GVar2 : Integer;
end.
GVar1是可见的,可以通过修改:
unit A;
interface
type
TMyClass = class
end;
implementation
end.
unit B;
interface
uses
A; // I can now see and use TMyClass.
您可以通过在一个单元,宣布他们声明全局变量所有使用单元A的单元.GVar2只能由单元A的代码访问,因为它在实现部分中定义。
我强烈建议不要在界面部分使用全局变量,因为你无法控制它们(因为任何人都可以改变它们)。如果你真的需要一个全局的,你最好在实现部分定义它,并提供访问功能。
顺便说一句,你可以看到一个单位作为一种类(单个实例)。它甚至有一个方法来构建和毁灭:
unit A;
interface
type
TMyClass = class
end;
implementation
initialization
// Initialize the unit
finalization
// Free resources etc. You can olny have a finalization if you have an initialization.
end.
+1
关于你对“单位课堂”的观察,我想这正是德尔福单位在.Net中的实现方式。 – 2009-01-12 15:32:15
0
如果你想全局变量声明它在你的单位的接口部分。
PS控制台应用程序可以使用单位。
PPS花些时间阅读Delphi文档,它很好地解释了Delphi语言。
相关问题
- 1. 在Delphi中全局变量和基于堆的变量总是不稳定的?
- 2. lotusscript中的全局变量如何全局变量IBM Notes 9
- 3. 全局变量
- 4. 全局变量
- 5. 全局变量?
- 6. 全局变量
- 7. 全局变量
- 8. 全局变量
- 9. 全局变量
- 10. 全局变量
- 11. Ember中的全局变量
- 12. sqlQuery中的全局变量
- 13. python中的全局变量
- 14. C#中的全局变量
- 15. MonoTouch中的全局变量
- 16. Ironpython中的全局变量
- 17. C中的全局变量#
- 18. javascript中的全局变量
- 19. JS中的全局变量
- 20. Silverlight中的全局变量?
- 21. JavaScript中的全局变量?
- 22. Swift中的全局变量
- 23. CodeIgniter中的全局变量
- 24. pytest中的全局变量
- 25. iOS中的全局变量
- 26. MkDocs中的全局变量
- 27. Rails中的全局变量
- 28. Windows.Forms中的全局变量
- 29. nanoc中的全局变量
- 30. 变量全局变量?
好的。你的理解是错误的。但是你的问题是什么? – 2009-01-12 07:16:25