我要疯了------〉〉〉〉〉〉〉〉为什么访问本类的私有变量都能造成非法访问内存?

时间:2021-04-27 18:15:15
function TXMLNodes_San.Level: integer;
begin
  result:=0;
  if assigned(fparent) then//这句怎么说 read of address 0000000C  ?????
    result:=fparent.Level+1;
end;
//其中的fparent是TXMLNode_San的一个private部分私有变量,类型是TXMLNodes_San(注意:不是TXMLNode_San,多了个s).

还有这回事?

D6+win2000 professional

4 个解决方案

#1


assigned(fparent) 应该不会出错吧


建议贴多一点代码

建议用FreeAndNil代替Free
用Assigned检查后还出错一般是对象free了但引用没有设为nil

#2


呵呵,注意:
不是我调用fparent的某些方法的时候出错阿!

而是我监测fparent=nil的时候出错啊!

这是什么造成的?

#3


出错不是result:=fparent.Level+1;而恰恰是assigned(fparent) ?!

#4


去跟踪一下assigned的原程序看看

#1


assigned(fparent) 应该不会出错吧


建议贴多一点代码

建议用FreeAndNil代替Free
用Assigned检查后还出错一般是对象free了但引用没有设为nil

#2


呵呵,注意:
不是我调用fparent的某些方法的时候出错阿!

而是我监测fparent=nil的时候出错啊!

这是什么造成的?

#3


出错不是result:=fparent.Level+1;而恰恰是assigned(fparent) ?!

#4


去跟踪一下assigned的原程序看看