把对象所包含的所有数据清零。
之前以为是CleanupInstance,但试了一下,不对。

解决方案 »

  1.   

    然后Object就== nil了  呵
      

  2.   

    FillChar(Object, szieof(Object), 0);
      

  3.   

    FillChar(Object, szieof(Object), 0);
    ----------
    用了这个后,访问类的成员会出错
      

  4.   

    把对象所包含的所有数据清零。
    ==================================================================================
    都清0当然会出错,我是按搂住要求给的,是符合题意的.Free了就更出错哈,哈
      

  5.   

    补充,可以说,真正满足楼主要求的,可能就是FillChar,谁还有更直接的方法???
      

  6.   

    找到办法了
    var
      P:Pointer;
    begin
      P := Pointer(integer(Obj) + 4);
      ZeroMemory(P,Obj.InstanceSize - 4);这样子就OK了,我试了没问题。
    理由是,delphi里对象存储是头4个字节是虚方法表VMT,再往下才是其成员数据,因此,要清空对象的数据,起始位置是对象的地址偏移4个字节,大小是对象的大小-4
      

  7.   

    看看李维的<INDIDE VCL FRAME> p46 line 7....Object Pascal的对象模型会先初始化所有的内存内容为0.
    FillChar(Instance^ ,InstanceSize, 0);
      

  8.   

    <Inside VCL FrameWork>
      

  9.   

    看看李维的<INDIDE VCL FRAME> p46 line 7
    ===========================================================================
    老弟连页码行数都记得啊,不简单,哈哈
      

  10.   

    delphi对象创建后,所有内存都为0,这个我知道。我就是想让对象在已经有了数据情况下,清空所有数据。
    试了InitInstance方法,也是可以的。
    不过用这个方法初始化对象时,又把虚方法表建一遍,那倒没必要了。上面的方法应该就够用了。