var
  Form1: TForm1;
  sl :TStringList;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  sl := TStringList.Create;
end;procedure TForm1.btn1Click(Sender: TObject);
var
  ss : TStringList;
begin
  ss := sl ;
  ss.Free;
 问题是在以后如何通过sl这个变量去判断对象是否存在。
end;顺便问下我以前发的贴子呢,就是今年的发的一些贴子大部分不见了,版主能否找出来下
我自己收藏,可否?
谢谢!

解决方案 »

  1.   

    ss.Free; ->FreeAndNil(ss); or ss.free; ss := nil;
      

  2.   

    简单数据类型之间的赋值可以用“=”但是如果是对象或者是引用类型的赋值需要用assigned
    不然会造成内存泄露。
      

  3.   

    关键是用NIl或Assigned去判断sl都是返回true的,实际上ss 已经释放了该对象。
      

  4.   

    主  题:  分享一下:不久前写的不用try...except判断一个指针或对象是否有效的极简单代码,也许对你有帮助  
    作  者:  Idle_ (阿呆)  
    等  级:    
    信 誉 值:  100  
    所属社区:  Delphi 语言基础/算法/系统设计  
    问题点数:  100  
    回复次数:  18  
    发表时间:  2005-11-16 16:43:50  
       
     
       function IsValidMemPtr(Ptr: Pointer): Boolean;
    var
      p: PInteger;
    begin
      p := Pointer(Integer(Ptr)-4);
      result := (Cardinal(Ptr) > $FFFF) and not IsBadReadPtr(p, 8) and (p^ and 2 <> 0) and (p^ and $80000000 = 0) and (p^ and $7FFFFFFC <> 0);
    end;
      

  5.   

    楼上用了运行时信息了吧,比较难,要对对象的数据结构比较了解
    可否还有简单些的呢
    比如Object的一些类方法,利用异常返回?
      

  6.   

    什么叫"通过sl这个变量"
    判断sl是否为nil就可以了
      

  7.   

    什么叫"通过sl这个变量"
    判断sl是否为nil就可以了///////////////////有这么简单,我不会这么下50分啊,呵呵,它始终是不为NIL的.---------------------------------------------------
    没办法判断,避免这样的代码~~////////////////////////////////
    可能是这样哦