整理日期: 2009年8月18日
VC的union转DELPHI的结构用法总结
作者:7658229@qq.com
日期:2009-8-18
/
VC的结构如下:
struct {
UCHAR a1;
UCHAR a2;
}STRU_A, *PSTRU_A;
#pragma pack(1)
struct {
USHORT b1;
USHORT b2;
ULONG b3;
char szStr[100];
}STRU_B, *PSTRU_B;
#pragma pack()
struct {
union {
STRU_A sa;
STRU_B sb;
};
}TEST_STRU;
/
转为DELPHI后如下:
type
UCHAR = BYTE;
USHORT = WORD;
ULONG= Cardinal;
STRU_A = record
a1: UCHAR;
a2: UCHAR;
end;
PSTRU_A = ^STRU_A;
STRU_B = packed record
b1: USHORT;
b2: USHORT;
b3: ULONG;
szStr: array[0…99] of char;
end;
PSTRU_B = ^STRU_B;
TEST_STRU = record
sb: STRU_B; //含union的结构取VC中结构较大的那个
end;
如何使用:
var ts: TEST_STRU;
1:直接访问最大的那个结构
ts.b1 := 10;
ts.b2 := 20;
2: 间接访问较小的其他结构
PSTRU_A(@ts.sb)^.a1 := 10;
PSTRU_A(@ts.sb)^.a2 := 20;
/