| 導購 | 订阅 | 在线投稿
分享
 
 
 

Delphi中實現C++/Java類似靜態變量的功能

來源:互聯網網民  2006-05-27 07:59:21  評論

在網上看到很多人都在爲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.

請大家指正....

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
在網上看到很多人都在爲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. 請大家指正....
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有