大侠们帮帮忙 :如何word类型转化为array[0..1] of char(100分)

  • 主题发起人 主题发起人 qinghe7
  • 开始时间 开始时间
Q

qinghe7

Unregistered / Unconfirmed
GUEST, unregistred user!
不是为什么R1 =record
word1:word
end
length(R1)=2
但是R2 =record
word1:word
byte1:byte;
end
length(R2)<>3 而是4,不是为什么
所以就想把word变为array[0..1]of char
如$ABCD 转为char[0]:=#AB ,char[1]:=#CD
不知如何转化,请大侠们帮忙,谢谢
 
晕,这时内存对齐啊!Delphi为了寻址方便,record在内存中是按照最大的变量类型对齐的
r2 = record
word1: word;
byte1: byte;
//由于前面的word是2个字节,这个byte为了对齐也是2个字节,后面一个字节在使用中是被看作无效的
end;
正确的写法应该是
r2 = [red]packed [/red]record
...
end;
 
R2 =packed record
word1:word
byte1:byte;
end
length(R2)=3
/////////////
type
R2 = packed record
case Integer of
0: (word1:word);
1: (array[0..1] of char);
end;
就自动转了
$ABCD 转为r2.char[0]:=#AB ,r2.char[1]:=#CD
 
多人接受答案了。
 
后退
顶部