语句应是错的!而且有逻辑错误!要一定让TEST建立就用TRY-----FINALY吧!
begin
if not assigned(test) then
begin
show---;
test:=Tstringlist.create;
end
else
if -----;
begin
if not assigned(test) then
begin
show---;
test:=Tstringlist.create;
end
else
if -----;
解决方案 »
- cxgrid 锁定行
- 我下载了一个充值系统,为什么总是提示目标机器积极拒绝?100分+50RMB
- 请问那个高手会用Inno Setup打包用Delphi8所编应用程序
- -------------救命: 关于时间操作------------
- 控件怎样随主窗体大小变化???
- 谁能告诉我WinISO5.3的注册码?
- 怎么让TListBox透明
- 谁会使用DELPHI编写驱动级的程序出来聊聊吧
- 要疯了的调试结果
- 简单问题:Tregistry.BeadBinaryData和动态数组的问题,急急急!!!!
- 此问题已经困扰我很长时间,请各位同仁帮忙(50分)不够再加!甚急!!!
- 一个一直未解决的问题!!!!!
但是用你的代码我也测试了一下,但是我发现:
var
test:tstringlist;
begin
if not assigned(test) then showmessage('not exists 1')
end;
运行它,也没出现message窗口,还没create test前,
Assigned(test)的值就已经是True;
例如:
begin
if a = nil then
a := TOBJ.Create;
a.Free;
a := nil;
end;
先将
test := nil
然后再用你的语句试试。
http://www.csdn.net/Expert/topicview.asp?id=672280
你说只有全局变量才自动初始化,那Assigned(test)判断时为True,
那么if not Assigned(test) then showmessage('not exists 1')
不应该显示message窗口,但实际上却有显示。
请问一下是全局变量自动初始化呢还是局部变量自动初始化???
我还有一个疑问?
var
test:tstringlist;
begin
test:=tstringlist.create;
try
finlly
test.free;
test:=nil;
//前面两句改变顺序test:=nil;test.free也可以
//为什么我先把test变量指向nil还能释放test所指向的内存空间???
end;
end;
之前所创建的tstringlist对象的内存空间的。