这个结构怎么转换为Delphi,请前辈高手们指点,不胜感激!

chen6635 2018-04-05 05:04:06
typedef struct
{ unsigned short _sid;
time_t _lstime;
time_t _tstime;
float _value;
union{
float _avalue;
time_t _tag;
};
UInt32 _acount;
}kIAItemLee;

typedef struct
{
char _sType[1];
char _sname[16];
char _rstyle;
int _x;
int _y;
double _lat;
double _lng;
Uint8 _state;
time_t _online;
time_t _fitime[16];
short _lvcount;
kIAItemLee _kias[GROUP_ITEM_LEE_CNT];
}kIAItem;
...全文
1030 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen6635 2018-04-27
  • 打赏
  • 举报
回复
分数太少,难为情,请多担待!!!
chen6635 2018-04-27
  • 打赏
  • 举报
回复
好久没上来了,谢谢大家!
ppluming 2018-04-16
  • 打赏
  • 举报
回复
3. 转换后的数据结构自己写吧,写后测试下,就不给你具体的答案了。
ppluming 2018-04-16
  • 打赏
  • 举报
回复
1. 前面把数据类型转换都说完了,前面说的很对。 2. 数据结构里面带char类型的,需要写成 packed record。 如 kIAItem= record end; 需要写成 kIAItem= packed record end;
  • 打赏
  • 举报
回复
#4的翻译方法是可行的,但是有点复杂,访问内嵌联合的时候需要强制类型转换。实际上虽然Pascal的记录变体部分看起来有些莫名其妙的限制,只允许出现在记录的最后部分,实际限制只是不允许出现多个并列变体,但是允许嵌套,而且变体之后不能再有结构成员的限制可以很容易克服,顺延到结构尺寸最大的那个变体部分之内即可,而且Pascal的记录内部也可以嵌套记录,表达能力并不次于C结构。 楼主的第一个结构可以这样实现: type time_t = integer; float = single; kIAItemLee = record _sid: word; _lstime: time_t; _tstime: time_t; _value: float; case integer of 0: (_avalue: float); 1: (_tag: time_t; _acount: cardinal); end; 访问方式可以和C结构完全一致。
xernet 2018-04-12
  • 打赏
  • 举报
回复
帮你第一个结构吧,第二个你自己动手依葫芦画葫芦吧,毕竟现在会delphi的不多了。 type TUnion = record case Integer of 0: (_dat: array[0..3] of Byte); 1: (_avalue: Real); 2: (_tag: Integer); end; type TkIAItemLee = record _sid: Word; _lstime: Integer; _tstime: Integer; _value: Real; _dat: array[0..3] of Byte; //这个字段实际是4字节,获取或者设置的时候可以用上面的TUnion结构来转换. _acount: Cardinal; end;
  • 打赏
  • 举报
回复
time_t =integer float=single char=AnsiChar union用record的变体部分实现
xiaocongzhi 2018-04-06
  • 打赏
  • 举报
回复
type klAltemLee=record _sid: Word; ... ... end;
chen6635 2018-04-06
  • 打赏
  • 举报
回复
引用 1 楼 xiaocongzhi 的回复:
type klAltemLee=record _sid: Word; ... ... end;
谢谢你的回复!主要是这里面数据类型的对应转换不熟悉!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧