Delphi好像是不支持静态属性吧(50分)

  • 主题发起人 沙隆巴斯的主人
  • 开始时间

沙隆巴斯的主人

Unregistered / Unconfirmed
GUEST, unregistred user!
Java , C++都有STATIC属性,DELPHI里面好象就没有
 
如果求静态变量的话可用
const
i:integer=0;
begin

inc(i);
showmessage(inttostr(i));
end;

呵呵,瞎拜
 
不是呀,你在单元文件的
Var
Form1 : TForm1;
的下面定义一个变量,那么这个变量就是静态的。
 
静态属性可不是全局变量或全局常量
 
Delphi只支持静态方法,在DELPHI里叫Class methods
这样声明:
type
TFigure = class
public
class function Supports(Operation: string): Boolean;
virtual;
class procedure GetInfo(var Info: TFigureInfo);
virtual;
...
end;
这样不创建这个类的对象也可以访问这样的方法
 
不支持。用全局变量凑合吧。以前讨论过。
 
好了,确定不支持就行了,结帖了
 
多人接受答案了。
 
一、静态变量
方法就是我上面所设想的那样,TObject 有一个类方法:
class function NewInstance: TObject;
virtual;
我 override 了它:
TMyObj = class(TObject)
public
class function NewInstance: TObject;
override;
end;
然后在它内部定义一个静态变量,并作如下修改:
class function TMyObj.NewInstance: TObject;
const Instance: TObject = nil;
begin
if Instance = nil then
Instance := inherited NewInstance;
Result := Instance;
end;
再写一个测试程序:
var
Form1: TForm1;
Obj1, Obj2: TMyObj;
procedure TForm1.FormCreate(Sender: TObject);
begin
Obj1 := TMyObj.Create;
Obj2 := TMyObj.Create;
if Obj1=Obj2 then
Showmessage('ok');
// Ok 显示出来了
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Obj1.Free;
//Obj2.Free;
// 这句话必须注释掉,否则会引起异常,证明二者确实是一个对象
end;
 
顶部 底部