中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
Delphi中实现C++/Java类似静态变量的功能
作者:未知 时间:2005-07-27 23:20 出处:CSDN 责编:chinaitpower
              摘要:Delphi中实现C++/Java类似静态变量的功能

在网上看到很多人都在为Delphi是否支持C++/Java中的静态变量及静态方法的功能而困扰,其实这在Delphi中是很简单的.

静态方法就是使用Class Function. 静态变量则使用单元局部变量来实现. 代码如下:

//=========================================
// StaticVarTestU - 定义了可以计数的类,通过类方法即可访问此类的对象数
//=========================================
unit StaticVarTestU;

interface

type
  TStaticVarClass = class
  public
    //constructor
    constructor Create();
    destructor Destroy; override;

    //类方法,取得对象的计数
    class function ObjectCount: integer;
  protected
  private
  
  end;

implementation

Var
  LObjCount: integer;


{ TStaticVarClass }

constructor TStaticVarClass.Create;
begin
  inc(LObjCount);   //使用局部变量
end;

destructor TStaticVarClass.Destroy;
begin
  dec(LObjCount);   //使用局部变量
  
  inherited;
end;

class function TStaticVarClass.ObjectCount: integer;
begin
  Result := LObjCount;     //返回局部变量
end;

initialization
  LObjCount := 0;           //初始化

finalization
  LObjCount := 0;

end.

//=========================================
// StaticTest - 测试代码,创建10个对象,并访问其计数,再Free掉.
//=========================================
program StaticTest;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Classes,
  StaticVarTestU in 'StaticVarTestU.pas';

procedure printObjCount;
begin
  WriteLn(Format('The Object Count now is %d', [TStaticVarClass.ObjectCount]));
end;

var
  i: integer;
  mObjList: TList;
begin
  { TODO -oUser -cConsole Main : Insert code here }

  mObjList := TList.Create;

  printObjCount;

  for i := 0 to 10 do
  begin
    mObjList.Add(TStaticVarClass.Create());

    printObjCount;
  end;

  for i := 0 to mObjList.Count -1 do
  begin
    TStaticVarClass(mObjList.Items[i]).Free;

    printObjCount;
  end;

  mObjList.Free;

  readln;
end.

请大家指正....
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有