我只知道vc的struct的使用,不知道 delphi的record如何捣腾,请高人指点。在vc中,有个结构体 
typedef struct {
int a;
int b;
}NetDATA;如果将1块内存区强制为这个结构体的话,下面的代码就可以了:char * p; //p指向这个内存去
NetDATA * n=(NetDATA *)p;然后就可以使用 n->a 和 n->b 了。现在我有delphi这方面的问题。如果delphi中也有1块这样的内存区,如何将他强制为结构体呢?type
  NetDATA= record
    a:integer;
    b:integer
end;var
p:PChar;
n:NetData;
如果p是指向1块内存区,如何将它赋值给n?

解决方案 »

  1.   

    type
      PNetDATA=^NetDATA;
      NetDATA= record
        a:integer;
        b:integer;
    end;
      

  2.   

    我对delphi这方面的了解非常少,
    我想问问下面这种情况如何折腾。type
      PNetDATA=^NetDATA;
      NetDATA= record
        a:integer;
        b:integer;
    end;
    var
      buf: pointer;
      pbuf: PChar;  net:NetDATA;
      pnet:PNetDATA;begin  GetMem(buf, 100);
      pbuf := PChar(buf);......
     ClientSocket.ReadBuffer(pbuf, 200);
    ........ 如何将net的内容指向pbuf呢?
      

  3.   

    pnet = (PNetDATA)pbuf;
    使用的时候:
    pnet.a(相当于n->a)
    或者
    pnet^.a(相当于*n.a)其实跟c差不多
      

  4.   

    也可以直接:
    PNetDATA(pbuf).a 相当于((NetDATA *)p)->a
    PNetDATA(pbuf)^.a 相当于 *((NetDATA *)p).a