在delphi中怎么表示和使用静态的变量

 我来答
windblast
2017-03-23 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13624
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

delphi 语言中,通常使用 const 关键字来定义声明一个静态常量,如果想使“静态常量”变成“静态变量”,对于 C++ 之类的语言可以使用 static 作为关键字指示声明,而在 delphi 里,通过 {$J+} 和 {$-} 编译指示字变通声明一个静态变量。

以下关于这两个指示字的说明资料:



以下用编写的静态变量的两个应用场合实例代码来说明,在 delphi 语言中,怎么表示和使用静态的变量:


1、静态局部变量

function TForm1.StaticTest(str: string): string;
{$J+}
const StaticCount: Integer = 0;//定义可修改的静态常量,作为累加器
{$J-}
begin
  StaticCount := StaticCount + 1;
  Result := str + ' ' + IntToStr(StaticCount);
end;

//局部静态变量测试
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  s: string;
begin
  for i := 1 to 10 do
  begin
    s := StaticTest('运行次数: ');
  end;
  ShowMessage(s);
end;


运行代码截图:


注意代码中,并没有进行 StaticCount 的累加,而结果显示为 10。



2、类静态变量


先定义一个包含静态常量的类:


type
  TMyClass = class
     NormalVal: string;
     {$J+}
     const staticVar: string = '原始常量值';
     {$J-}
  end;


再编写测试代码:


//类静态变量测试
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  s: string;
  MyClass1,MyClass2: TMyClass;       //声明两个TMyClass的实例
begin
  MyClass1 := TMyClass.Create;       //构造 MyClass1
  MyClass1.NormalVal := 'MyClass1';  //普通类变量赋值

  ShowMessage(MyClass1.staticVar + '  ' + MyClass1.NormalVal);

  MyClass2 := TMyClass.Create;       //构造 MyClass2
  MyClass2.NormalVal := 'MyClass2';  //普通类变量赋值

  ShowMessage(MyClass2.staticVar + '  ' + MyClass2.NormalVal);

  //给 MyClass1 中的静态变量赋值
  MyClass1.staticVar := '由 MyClass1 做了修改赋值';

  //注意下面代码中,显示的是 MyClass2 中的成员
  //MyClass2 中的 staticVar 并没有进行修改
  //作为对比,注意同时显示的 MyClass2 中的普通变量,并没有变动
  s := 'MyClass2.staticVar 的值(静态): ' + MyClass2.staticVar + #13#10 + #13#10 +
       'MyClass2.NormalVal 的值(普通): ' + MyClass2.NormalVal;

  MessageBox(Handle, PChar(s), '信息提示', MB_OK + MB_ICONINFORMATION);
end;


代码运行截图:



推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式