首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求圣人指点一下

2013-06-25 
求高人指点一下。TMyClass classm_boUse: Booleanprivatepublicend引用的时候 MyClass:TMyClassif MyC

求高人指点一下。

  TMyClass = class
    m_boUse   : Boolean;
  private

  public

  end;


引用的时候

 MyClass:TMyClass;

if MyClass <> nil then begin
  if MyClass.m_boUse then begin  //偶尔情况下,这里报内存错误了。

  end;
end;

如下类型的错误
Access violation at address 005C364A in module 'dddd.exe'. Read of address 83EC031A
[解决办法]
应该是访问了无效的对象地址,MyClass对象如何创建和销毁的,上完整点的代码。
销毁对象用freeandnil(MyClass),或者判断对象用 if assigned(MyClass) then ...
[解决办法]

引用:
应该是访问了无效的对象地址,MyClass对象如何创建和销毁的,上完整点的代码。
销毁对象用freeandnil(MyClass),或者判断对象用 if assigned(MyClass) then ...


if assigned(MyClass) then 用来判断确实比 if MyClass <> nil then效率高  但这不是问题所在
assigned判断对象是否存在  有时是不行的
声明一个全局对象时Delphi会自动将其指向nil,声明一个局部对象时Delphi会将其指向一个随机的地址而不是nil,当销毁一个对象时Delphi不会自动对对象标识符做什么,原来指哪里销毁后还是指哪里。

热点排行