Delphi 静态变量
Delphi static variable
在我的 class 中,我需要使用静态变量(static int next_id
;在 C++ 中)
我用
private
class var next_id: Integer;
我收到错误:PROCEDURE or FUNCTION expected
。如何用 Delphi 5 声明一些变量?
在 Delphi 5 中,你不能。 Delphi 5 中还没有 class 变量。
不过,下一个最好的事情是单元的实现部分中的全局变量。
unit Whatever;
...
implementation
var
next_ID: Integer;
...
initialization
next_ID := 0;
end.
或者,在最底部:
begin
next_ID := 0;
end.
扩展 Rudy 的回答...
Delphi 5 还没有这个可用。但是您至少可以声明一个全局变量。我不会复制 Rudy 的代码,但我会添加它以便初始化它们(并在必要时清理它们),您应该使用单元的 initialization
(和 finalization
)部分。这些放在 Delphi 单元的最底部,就像这样...
unit Whatever;
...
interface
...
implementation
...
initialization
MyGlobalVar := TMyGlobalVar.Create;
finalization
FreeAndNil(MyGlobalVar);
end.
或者你的情况...
initialization
next_ID := 1;
特别是您的方案不需要 finalization
部分。
class 变量声明示例:
unit Unit2;
interface
type
GlobalData = class
class var V1: String;
class var X1: Integer;
end;
implementation
end.
来自其他单位的使用示例:
procedure TForm1.FormCreate(Sender: TObject);
begin
GlobalData.V1 := 'Yahoo';
end;
您不需要创建和销毁此 class。它将在其他所有内容之前自动创建。
您的示例中有什么问题:class 变量必须在 class 内声明。我在你的示例中没有看到 class declaration
。另外,如前所述,Delphi 5(非常非常旧)不支持此功能。
在我的 class 中,我需要使用静态变量(static int next_id
;在 C++ 中)
我用
private
class var next_id: Integer;
我收到错误:PROCEDURE or FUNCTION expected
。如何用 Delphi 5 声明一些变量?
在 Delphi 5 中,你不能。 Delphi 5 中还没有 class 变量。
不过,下一个最好的事情是单元的实现部分中的全局变量。
unit Whatever;
...
implementation
var
next_ID: Integer;
...
initialization
next_ID := 0;
end.
或者,在最底部:
begin
next_ID := 0;
end.
扩展 Rudy 的回答...
Delphi 5 还没有这个可用。但是您至少可以声明一个全局变量。我不会复制 Rudy 的代码,但我会添加它以便初始化它们(并在必要时清理它们),您应该使用单元的 initialization
(和 finalization
)部分。这些放在 Delphi 单元的最底部,就像这样...
unit Whatever;
...
interface
...
implementation
...
initialization
MyGlobalVar := TMyGlobalVar.Create;
finalization
FreeAndNil(MyGlobalVar);
end.
或者你的情况...
initialization
next_ID := 1;
特别是您的方案不需要 finalization
部分。
class 变量声明示例:
unit Unit2;
interface
type
GlobalData = class
class var V1: String;
class var X1: Integer;
end;
implementation
end.
来自其他单位的使用示例:
procedure TForm1.FormCreate(Sender: TObject);
begin
GlobalData.V1 := 'Yahoo';
end;
您不需要创建和销毁此 class。它将在其他所有内容之前自动创建。
您的示例中有什么问题:class 变量必须在 class 内声明。我在你的示例中没有看到 class declaration
。另外,如前所述,Delphi 5(非常非常旧)不支持此功能。