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

请问这个vc中的结构体在Delphi中应该怎样封装

2012-02-09 
请教这个vc中的结构体在Delphi中应该怎样封装?这个vc结构体是这样的:typedef struct{void *contentunsign

请教这个vc中的结构体在Delphi中应该怎样封装?
这个vc结构体是这样的:
typedef struct
{
  void *content;
  unsigned char flags;
  unsigned char vsm_size;
  unsigned char vsm_data [ZMQ_MAX_VSM_SIZE];
} zmq_msg_t;

其中,ZMQ_MAX_VSM_SIZE=30,请教这个结构体用Delphi封装出来时怎样的?对象名称不变哈

[解决办法]

探讨

TMQMsg = record
Content: Pointer;
Vsm_Size: Char;
Vsm_Data: array[0..ZMQ_MAX_VSM_SIZE - 1] of Char;
end;
参考

[解决办法]
不要变成指针,这样结构体的长度就不对了

如果你程序里要用到结构体数组,还要注意字节对齐的问题。c++的结构体是4字节对齐,delphi默认是8的
[解决办法]
探讨
字节对齐是什么意思呢?
我在Delphi中掉要VC生成的动态链接库,其中动态链接库有函数的参数就是这个结构体的指针。
我的封装是这样的:

type
zmq_msg_t = record
content:Pointer;
flags:Byte;
vsm_size:Byte;
vsm_data:array[0..29] of Byte;
end;
zmq_msg……

[解决办法]
探讨

字节对齐是什么意思呢?
我在Delphi中掉要VC生成的动态链接库,其中动态链接库有函数的参数就是这个结构体的指针。
我的封装是这样的:

type
zmq_msg_t = record
content:Pointer;
flags:Byte;
vsm_size:Byte;
vsm_data:array[0..29] of Byte;
end;
zm……

热点排行