Delphi静态变量

7
在我的课程中,我需要使用静态变量(在C++中为static int next_id)。
我使用
private
    class var next_id: Integer;

我收到错误:PROCEDURE或FUNCTION expected。如何使用Delphi 5声明一些变量?

我认为一个简单的本地(在“实现”中)变量就可以解决它。 - Gabriel
3个回答

7
在Delphi 5中是不支持类变量的。但可以在单元的实现部分使用全局变量作为替代品。
unit Whatever;

...

implementation

var
  next_ID: Integer;

...

initialization
  next_ID := 0;

end.

或者,也可以在页面最底部添加:
begin
  next_ID := 0;
end.

谢谢。是否可以将某些全局变量用作所有实例的静态变量?我应该在哪里初始化这个全局变量? - user4054093
@user6751794 你应该看一下单元底部的initializationfinalization部分。在你的情况下,那似乎是最理想的事情。 - Jerry Dodge
plus1. 我认为一个简单的本地(实现)变量就可以完成它。 - Gabriel

3

在Rudy的回答基础上进一步说明...

Delphi 5还没有这个功能。但是你至少可以声明一个全局变量。我不会复制Rudy的代码,但我会补充说,为了初始化它们(必要时清理它们),你应该使用一个单元的initialization(和finalization)部分。它们放置在Delphi单元的最底部,如下所示...

unit Whatever;

...

interface

...

implementation

...

initialization
  MyGlobalVar := TMyGlobalVar.Create;
finalization
  FreeAndNil(MyGlobalVar);
end.

在您的情况下,...
initialization
  next_ID := 1;

而且你的情况不需要 finalization 部分。


-1

类变量声明示例:

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;

你不需要创建和销毁这个类。它会在其他所有东西之前自动创建。

你的示例中有什么问题:类变量必须在类内声明。我在你的示例中没有看到类声明。而且,正如之前提到的,Delphi 5(非常古老)不支持这个特性。


1
@DavidHeffernan -- 你有没有读到最后?你看到了“Delphi 5(非常古老的版本)不支持此功能。12小时前回答”的内容了吗? - Zam
@user6751794 -- 你有没有读到最后?你看到了“Delphi 5(非常古老的版本)不支持此功能。12小时前回答”的内容了吗? - Zam
那么它就没有太多用处了。倒数第二段有点误导。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接