在C中用#pragma pack(n)改变字节对齐方式,在delphi中如何实现。

guchangchun 2004-12-07 02:09:01
譬如:
在C中
#pragma pack(4)
struct test
{
double x1;
int x2;
double x3;
}
#pragma pack()

在delphi中如何实现
record test=
begin
x1:Double;
x2:Integer;
x3:double;
end;
...全文
335 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
武稀松 2004-12-08
  • 打赏
  • 举报
回复
{$ALIGN 1}, {$ALIGN 2}, {$ALIGN 4}, {$ALIGN 8}
或者{$A1}, {$A2}, {$A4}, {$A8}

packed record=....end;是紧密对齐方式,就是1字节对齐
民间导尿管 2004-12-08
  • 打赏
  • 举报
回复
{$A4}
ehom 2004-12-07
  • 打赏
  • 举报
回复
{$A4}

或者

Options中设置

上面那些GG们说的和你要的两回事
benbenliu 2004-12-07
  • 打赏
  • 举报
回复
我记得如果不加Packed Delphi是按自然边界对齐,加上Packed delphi就不加填料来对齐了,难道我记错了,不会吧??
guchangchun 2004-12-07
  • 打赏
  • 举报
回复
谢谢,再问一下,那么设置按多少字节对齐那?
如在C中,pack(4)表示按4个字节对齐,在Delphi中 packed record=....end;表示是按多少字节对齐那。
beyondtkl 2004-12-07
  • 打赏
  • 举报
回复
1. type tagRecord = packed record
ch: char;
end;
2. Project -> Options -> Compiler: Record field aligment :default is 8, you can change it to 1byte.
但是他這個是針對本工程裡所有的...而VC中可以 pack後 馬上pop 從而 可以控制任意區間內的設置.
ICMGDCHN 2004-12-07
  • 打赏
  • 举报
回复
同上,用packed
梅青松 2004-12-07
  • 打赏
  • 举报
回复
test= packed record
x1:Double;
x2:Integer;
x3:double;
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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