【问题标题】:Delphi static variableDelphi 静态变量
【发布时间】:2016-08-27 23:34:40
【问题描述】:

在我的课堂上,我需要使用一个静态变量(static int next_id; 在 C++ 中)

我用

private
    class var next_id: Integer;

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

【问题讨论】:

  • 我认为一个简单的本地(在“实现”中)变量会做到这一点。

标签: delphi static delphi-5


【解决方案1】:

在 Delphi 5 中,你不能。 Delphi 5 中还没有类变量。

不过,下一个最好的事情是在单元的实现部分中使用全局变量。

unit Whatever;

...

implementation

var
  next_ID: Integer;

...

initialization
  next_ID := 0;

end.

或者,在最底部:

begin
  next_ID := 0;
end.

【讨论】:

  • 谢谢 ..可以使用一些全局变量作为所有实例的静态变量吗?我可以在哪里初始化这个全局变量?
  • @user6751794 你应该看看单元底部的initializationfinalization 部分。在你的情况下,这似乎是最理想的事情。
  • 加1。我认为一个简单的本地(实现)var 就可以了。
【解决方案2】:

扩展 Rudy 的答案...

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

unit Whatever;

...

interface

...

implementation

...

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

或者在你的情况下......

initialization
  next_ID := 1;

尤其是您的场景不需要finalization 部分。

【讨论】:

    【解决方案3】:

    类变量声明示例:

    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 declaration。另外,如前所述,Delphi 5(非常非常老)不支持此功能。

    【讨论】:

    • @DavidHeffernan -- 你有没有读到最后。你看到Delphi 5 (very very old) do not support this feature. answered 12 hours ago了吗?
    • @user6751794——你有没有读到最后。你看到Delphi 5 (very very old) do not support this feature. answered 12 hours ago了吗?
    • 那就没什么用了。倒数第二段有点误导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2020-07-13
    相关资源
    最近更新 更多