1

我有一个用 Delphi 编写的控制台应用程序。我看到我可以通过将全局变量分配给单元范围来获得全局变量,但是在控制台应用程序中我不使用单元(据我所知,它只是表单)。

4

2 回答 2

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.
于 2009-01-12T06:54:21.437 回答
1

如果你想要全局变量在你的单元的接口部分声明它。

PS 控制台应用程序可以使用单位。

PPS 花点时间阅读 Delphi 文档,它很好地解释了 Delphi 语言。

于 2009-01-12T06:58:16.280 回答