var 
  A:TButton;
begin  A:=Button1;//现在 A 不为nil。  Button1.Free;end;
现在 A 已是一个无效的指针。请问如何判断 A 现在是否有效。注意:不能用Button1.Free;后加A:=Nil;然后用 if A=nil then 来判断!!!!要主动的去判断 A 是否有效。---------------------------大家有没有注意到这个问题呢???????

解决方案 »

  1.   

    没有办法判断的,指针只要不为nil,你就不能确定他直向的地方是否有意义,
    除非它直向的地址空间不存在(或未提交)
      

  2.   

    此题无解,你死心吧。:)
    WINDOWS有一些判断指针数据区是否有读,写能力的API。但是对于你这种情况无效。
    如果你不怕麻烦可以自己写一个分配内存的方法,主要是在你的内存区多申请一个字节,拿来做标识,为1是可以用,为0不可以用。这样可以解决你的问题,但是用起来会比较麻烦。:)
      

  3.   

    if not assigned(A) then
      无效
      

  4.   

    呵呵,我遇见这样的问题。一般是用FreeAndNil,然后判断是否为 nil 的,这样简单
      

  5.   

    偶哭,听了 foxnt(吴剑明★天马梦想) 老兄的话我也相信是无解了。wweijie(我是一只小小小小鸟) 的实现是不行的只有A为nil 的时候才行,现在A只是无效不是nil.
      

  6.   

    没错。这种情况不能用assigned
      

  7.   

    最后顶一下没人回答分就给: foxnt(吴剑明★天马梦想) 和xgc521(路人)两位老兄了。