如何获得WORD类型的两个字节的内容
var
WD : Word;
begin
WD := $1234;
ShowMessage(Format('%d, %d', [WordRec(WD).Hi, WordRec(WD).Lo]));
end;
输出: 18,52
-----------------------------------------------------------------------------------
关于WordRec的定义如下(在SysUtils单元文件中定义):
WordRec = packed record
case Integer of
0: (Lo, Hi: Byte);
1: (Bytes: array [0..1] of Byte);
end;
可以看到通过类型转换,我们就可以很方便的利用它.很显然,这是利用了指针的方便.
当然不使用系统提供的record,我们也可以自己定义,仿照系统的例子,我定义勒如下的结构:
TWord = packed record
Lo: byte;
Hi: byte;
end;
看清楚了,的确是Lo在前面,而Hi在后面。这是形如$1234的整数在内存的排列是3412这个样子的.
WD : Word;
begin
WD := $1234;
ShowMessage(Format('%d, %d', [WordRec(WD).Hi, WordRec(WD).Lo]));
end;
输出: 18,52
-----------------------------------------------------------------------------------
关于WordRec的定义如下(在SysUtils单元文件中定义):
WordRec = packed record
case Integer of
0: (Lo, Hi: Byte);
1: (Bytes: array [0..1] of Byte);
end;
可以看到通过类型转换,我们就可以很方便的利用它.很显然,这是利用了指针的方便.
当然不使用系统提供的record,我们也可以自己定义,仿照系统的例子,我定义勒如下的结构:
TWord = packed record
Lo: byte;
Hi: byte;
end;
看清楚了,的确是Lo在前面,而Hi在后面。这是形如$1234的整数在内存的排列是3412这个样子的.
评论
发表评论