F foolaliu Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #1 如题。<br>我用Assigned函数不起作用,有高手知道吗?
4 41426277 Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #2 if TStringList=nil then showmessage('is null');
K kgafly Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #4 if 变量名 is TStringList then
L leeeeleeee Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #5 if Assign(List) then List:=TstringList.create;
L liuyanx Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #6 设置个异常试试<br>try<br> strlist.free;<br>except<br> showmessage('没有创建!')<br>end;
Z zxbyh Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #7 UnAssigned行不行??<br>我也没试过<br><br>if 变量名=UnAssigned then<br>begin<br> showmessage('没有创建');<br>end;
UnAssigned行不行??<br>我也没试过<br><br>if 变量名=UnAssigned then<br>begin<br> showmessage('没有创建');<br>end;
雪 雪中漫步 Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #8 tstirnglist 很有意思<br>你即使不创建,给它add,他也不报错!
薄 薄荷 Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #9 你的问题是因为你的stringlist一定是申明为局部变量了。申明为全局变量就没有问题了。<br>比如:<br>var MyStr: TStringList;<br>....<br>begin<br> //MyStr := TStringList.Create;<br> if Assigned(MyStr) then<br> ShowMessage('Assigned!')<br> else<br> ShowMessage('Unassigned!');<br>end;
你的问题是因为你的stringlist一定是申明为局部变量了。申明为全局变量就没有问题了。<br>比如:<br>var MyStr: TStringList;<br>....<br>begin<br> //MyStr := TStringList.Create;<br> if Assigned(MyStr) then<br> ShowMessage('Assigned!')<br> else<br> ShowMessage('Unassigned!');<br>end;
薄 薄荷 Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-04 #10 原因是Assigned函数检查指针是否为nil,全局变量的指针自动初始化为nil,而局部的<br>不会,指针是个不定值。所以Assigned失效。<br><br>to 雪中漫步<br><br>不报错是因为你一定也是申明的局部变量,这个时候这个变量不是nil,所以没有报错,<br>但是不能访问它。<br>不如如果你接着再写: Self.Caption := MyStr[0];就出错了。<br>比如:<br>var<br> MyStr: TStringList;<br>begin<br> //MyStr := TStringList.Create;<br> MyStr.Add('a');<br> Caption := MyStr[0]; //出错!<br> if Assigned(MyStr) then<br> ShowMessage('Assigned!')<br> else<br> ShowMessage('Unassigned!');<br>end;<br><br><br>
原因是Assigned函数检查指针是否为nil,全局变量的指针自动初始化为nil,而局部的<br>不会,指针是个不定值。所以Assigned失效。<br><br>to 雪中漫步<br><br>不报错是因为你一定也是申明的局部变量,这个时候这个变量不是nil,所以没有报错,<br>但是不能访问它。<br>不如如果你接着再写: Self.Caption := MyStr[0];就出错了。<br>比如:<br>var<br> MyStr: TStringList;<br>begin<br> //MyStr := TStringList.Create;<br> MyStr.Add('a');<br> Caption := MyStr[0]; //出错!<br> if Assigned(MyStr) then<br> ShowMessage('Assigned!')<br> else<br> ShowMessage('Unassigned!');<br>end;<br><br><br>
Z zjan521 Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-06 #11 同意,对变量的初始值要确定的把握.<br>曾有文章说为了效率,不作无用的初始化,<br>但我觉得多加几句没什么坏处.<br>局部变量是在堆栈中的,对象仅仅是一个指针