纪录类型的变量可以肯很轻松地复制到一个PCHAR指向的Buffer中去, 因为纪录变量
在内存中的存储也是连续的. 下面是一个例子:
procedure TForm1.Button1Click(Sender: TObject);
type
pMyRec = ^MyRec;
MyRec = Record
a: integer;
b: double;
c: string[8];
end;
var
arecord: MyRec;
pBuffer: PChar;
aBuffer: array [0..SizeOf(MyRec)] of char
//动态分配pBuffer时,可去掉此行
begin
pBuffer := @aBuffer;
//pBuffer := AllocMem(sizeof(MyRec));
with pMyRec(pBuffer)^ do
begin
a := 12345;
b := pi;
c := 'Hello!!';
end;
aRecord := pMyRec(pBuffer)^;
showmessage(format('a: %d, b: %f, c: %s',
[aRecord.a,
aRecord.b,
aRecord.c]));
//FreeMem(pBuffer,SizeOf(MyRec));
end;
例子中的aBuffer也可以动态分配