考虑这个简短的 Delphi 过程:
procedure TfrmXQuery.FieldListFillFromDefault;
var
field_list: TStringList;
begin
try
if x <> '' then begin
field_list := TStringList.Create;
{do some stuff with field_list}
end;
finally
if field_list <> NIL then
begin
field_list.Free;
end;
end;
end;
当我在 Delphi 3 中使用 x = '' 运行它时,永远不会创建 field_list,
- 为什么
field_list <> NIL
? - 对象没有初始化为
NIL
? - 如果不是
NIL
,那是什么? - 如果它没有分配而不是
NIL
我怎么知道Free
它是否分配?Assigned
函数没有告诉我:if Assigned(an_object)
相当于if an_object = NIL