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.
相关文档:
如果你去面试的时候,面试官考你,为什么要在java中的main方法前加public static void这些修饰符,你知道如何去回答吗?下面我为大家讲解一下吧!如果有什么缺漏的话!欢迎大家的指点!
首先,为什么要用public:
因为在运行程序时,jvm要调用main方法,但我们都应该知道jvm ......
//输入某年某月某天,输出这一天是这一年的第几天
public class DaySum {
public static void main(String[] args)
{
date da=new date();
System.out.println(da.count(2008,12,31));
}
}
class date
{
int count(int year,int month,int day) ......
public class chengfa {
public static void main(String[] args)
{
model md=new model();
md.method();
}
}
class model
{
public int count=0;
public int[]b=new int[100];
public void me ......
浅析Java web程序之客户端和服务器端交互原理
近来一直在思考一个疑问,为什么在用struts框架开发的时候FormBean都须要序列化,即实现Java.io.Serializable接口,本着勤学好问的精神我Google了下对象序列化方面的文章,虽然大体明白了如何做,但是还是没有搞清楚为什么要这样做;结尾我想处理一个疑问要找疑问的根源和本质 ......
一.POI简介
Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API
目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。
二.HSSF概况
......