我有一個用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