我有一个用Delphi编写的控制台应用程序。 我看到我可以通过将它们分配给单元范围来获得全局变量,但是在控制台应用程序中我不使用单位(从我所理解的仅仅是形式)。
答案 0 :(得分:13)
不,单位不等同于表格。
单位是包含程序一部分的模块。每个表单都是一个单独的单元,但单元不必包含表单。
每个单元都有一个接口部分和一个实现部分。接口部分中的声明对使用该单元的所有单元都是可见的:
unit A;
interface
type
TMyClass = class
end;
implementation
end.
unit B;
interface
uses
A; // I can now see and use TMyClass.
您可以通过在单元中声明全局变量来声明全局变量:
unit A;
interface
var
GVar1 : Integer;
implementation
var
GVar2 : Integer;
end.
GVar1是可见的,可以使用单元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 :(得分:0)
如果你想要全局变量在你单位的接口部分声明它。
PS控制台应用程序可以使用单位。
PPS花一些时间阅读Delphi文档,它很好地解释了Delphi语言。