我看了很多帖子在论坛上指点一下,Assigned功能,Free性能,FreeAndNil功能等......我已经知道自由功能不去除指针引用到分配的对象,FreeAndNil做它...所有的帖子我看了对待这个问题的考虑Create方法已经被执行,或者换句话说,考虑已经创建的对象.
我的问题是:为什么Assigned函数对于未初始化的对象变量返回true?
举个例子:
procedure TForm1.FormCreate(Sender: TObject);
var
Qry: TADOQuery;
begin
if Assigned(Qry) then
ShowMessage('Assigned')
else
ShowMessage('Unassigned');
Qry := TADOQuery.Create(nil);
if Assigned(Qry) then
ShowMessage('Assigned')
else
ShowMessage('Unassigned');
end;
Run Code Online (Sandbox Code Playgroud)
该示例显示"已分配"两次!
结论:在Qry声明之后,在创建方法执行之前,指针Qry就不是NIL!
如果我把Qry := nil;第一行放到上面的程序中,一切正常......它显示'未分配'和'已分配'.
为什么??
有没有什么安全的方法可以知道类变量是否已经执行了create方法?