procedure ......;
var
obj:Tcomponent;
begin
if not assigned(obj) then
begin
obj:= Tcomponent.create(nil);
.
.
.
end;
.
.
.
end;问题 : 无论是否已经执行了obj:= Tcomponent.create(nil);
assigned(obj)都不为空
请问如何判断obj是否已经create?
var
obj:Tcomponent;
begin
if not assigned(obj) then
begin
obj:= Tcomponent.create(nil);
.
.
.
end;
.
.
.
end;问题 : 无论是否已经执行了obj:= Tcomponent.create(nil);
assigned(obj)都不为空
请问如何判断obj是否已经create?
obj := nil;
这样也不行
大家没有遇到过 要判断一个实例是否已经创建的问题么
obj:Tcomponent;
把它定义成全局的就可以了,在局部变量里面不行
===========================================================================
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
obj:Tcomponent;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
obj:= Tcomponent.create(nil); //创建
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if assigned(obj) then //如果已经创建就释放,没有创建就什么都不做
begin
FreeAndNil(obj);
end;
end;end.
我是在keypress事件里定义的
当首次按键时 创建实例
再次按键时 不再重新创建这个实例 执行下面的代码为什么obj定义成全局变量可以 局部不可以