我一般是这样做的:
*************************************************************
if form1<>nil then
begin
form1=nil;
form1.free;
end;
form1:=Tform1.Create;
*************************************************************
the use of assigned:
****************************************************************
Tests for a nil (unassigned) pointer or procedural variable.
Unit
System
Category
miscellaneous routines
function Assigned(const P): Boolean;
Description
Use Assigned to determine whether the pointer or procedure referenced by P is nil. P must be a variable reference of a pointer or procedural type. Assigned(P) corresponds to the test P<> nil for a pointer variable, and @P <> nil for a procedural variable.
Assigned returns False if P is nil, True otherwise.
Note: Assigned can't detect a dangling pointer--that is, one that isn't nil but no longer points to valid data. For example, in the code example for Assigned, Assigned won't detect the fact that P isn't valid.
********************************************************************