我有一个TPCBText对象的实例PCBText, 可以用PCBText.x1,PCBText.y1,PCBText.Size等等来获得这个对象的内容, 但是为什么SizeOf(PCBText) 得到的值会是4了, 感觉好像PCBText就是一个指针。但是要获得一个指针的内容不是应该 像 PCBText^.x1 来获得吗?

解决方案 »

  1.   

    你是说 PCBText是引用是吧?
      那我要如何获得这个对象的实际大小了, 我最终的目的是想把实际的对象整个装到
    Buffer: array [0..MAX_PACKETSIZE - 1] of Char;   这里面来。
      

  2.   

    要想达到你的目的,应该用记录类型,不应该用对象,delphi中所有类实例都是指针。
      

  3.   

    也就是说,另外定义一个记录
        MTPCBText = record
             x1:TCoord;
             y1:TCoord;
             Size:TCoord;
        end;
    然后把对象里的内容逐个赋给记录是吧。
                  MPCBText.x1:= PCBText.x1;
                  MPCBText.y1:= PCBText.y1;
                  MPCBText.Size:= PCBText.Size;
      

  4.   

    SizeOf(PCBText) 得到的值是4,因为PCBText是指向该实例的handle,想得到它的大小用PCBText.instancesize;好像是这个,记不清,自己打点看看吧
      

  5.   

    我记得好像有个叫clone的方法应该是你要的
      

  6.   

    哦,谢谢。 我先试试这个PCBText.instancesize
      能把你说的clone详细说下吧,如果有实例代码就更好了,谢谢
      

  7.   

    不好意思,记错了,clone是java里的方法,delphi用assignto();具体参考http://www.delphibbs.com/keylife/iblog_show.asp?xid=2547
      

  8.   

    我看了你给我推荐的这篇文章,但是我发现它是讲如何实现两个对象的克隆的吧。 而我现在想要的功能是将一个对象PCBText 整个装到
    Buffer: array [0..1023] of Char;   这里面来。
       按照我的理解应该有个类似的函数 copy(Buffer,PCBText,PCBText.instancesize)。
    不知Delphi如何实现的。
    谢谢