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.

請大家指正....

 
Delphi中實現C++/Java類似靜態變量的功能
在網上看到很多人都在爲Delphi是否支持C++/Java中的靜態變量及靜態方法的功能而困擾,其實這在Delphi中是很簡單的.靜態方法就是使用Class Function. 靜態變量則使用單元局部變量來實現. 代碼如下://=================...查看完整版>>Delphi中實現C++/Java類似靜態變量的功能
 
多媒體和網絡時代中,C++,Delphi,Java,還是C#?
  在應用領域,C/C++不算高級語言,對硬件和系統程序員才算。雖然C++首腦任務堅稱C++的地位不會有太大變化,但.NET和Java的對抗很可能最終將其踢出主賽局。在多媒體、遊戲等領域,據gamedev.net的資料,此領域以C+...查看完整版>>多媒體和網絡時代中,C++,Delphi,Java,還是C#?
 
回複:delphi的接口的意義是不是跟C++和Java的不同呢?
delphi的接口的意義是不是跟C++和Java的不同,怎麽我這樣不行的呢: IInterface1 = interfaceend;IInterface2 = interface(IInterface1) procedure method();end;TClass1 = class(TInterfacedObject, IInterface2)....查看完整版>>回複:delphi的接口的意義是不是跟C++和Java的不同呢?
 
多媒體和網絡時代中,C++,Delphi,Java,還是C#?
多媒體和網絡時代中,C++,Delphi,Java,還是C#?在應用領域,C/C++不算高級語言,對硬件和系統程序員才算。雖然C++首腦任務堅稱C++的地位不會有太大變化,但.NET和Java的對抗很可能最終將其踢出主賽局。在多媒體、...查看完整版>>多媒體和網絡時代中,C++,Delphi,Java,還是C#?
 
一組實現郵件發送功能的C++封裝類SMailer
一組實現郵件發送功能的C++封裝類 — SMailer 作者: 這個程序是筆者近日在實驗郵件發送系統時寫的,原本只想實現功能了事,可也許是程序員的慣常品性所至,幾經完善的結果就成了如今這...查看完整版>>一組實現郵件發送功能的C++封裝類SMailer