if  Object <>nil  不行 
释放了还是有值

解决方案 »

  1.   

    procedure Fan(var Obj);
    var
      Temp: TObject;
    begin
      Temp := TObject(Obj);
      Pointer(Obj) := nil;
      if assigned(temp)then Temp.Free;
    end;
      

  2.   

    if Assigned(Obj) then FreeAndNil(Obj);
      

  3.   

    你不能判断得出对象是否真的已释放,你只能判断得出它的引用是否为nil。
      

  4.   


    if Assigned(obj) then
       ShowMessage('已经释放了')
    else
       ShowMessage('还没有释放');
      

  5.   

    释放用
    FreeAndNil 
    Or
    Object.Free
    Object:=Nil判断存在用
    Assigned(Object) 
      

  6.   

    由于Delphi没有垃圾回收机制,所以要求“谁分配谁释放”,释放内存后再把对象引用置为nil。典型的例子:
    procedure DoSomething;
    var
      s: TStrings;
    begin
      s := TStringList.Create;
      try
        // ...
      finally
        s.Free; 
        s := nil;  // 这里可以不用将s置为nil,因为其他地方没有引用到s
      end;
    end;另外,如果多个变量(引用)指向同一个实例,就需要确定谁来释放了。