有类型 1
type
Deliver = ^TDeliver;
TDeliver = Record
RecvType:byte;
SrcNo: array [0..21] of byte;
TpUid:byte;
TpUdhi:byte;
Encoded:byte;
MsgLength:word;
Msg: array [0..161] of byte;
end;有类型 2
buffer:array[0..4096] of char;请问如何将 2 强制转换 1 中
type
Deliver = ^TDeliver;
TDeliver = Record
RecvType:byte;
SrcNo: array [0..21] of byte;
TpUid:byte;
TpUdhi:byte;
Encoded:byte;
MsgLength:word;
Msg: array [0..161] of byte;
end;有类型 2
buffer:array[0..4096] of char;请问如何将 2 强制转换 1 中
D: TDeliver;
buffer:array[0..4096] of char;
Move(Buffer, D, SizeOf(D));
procedure TForm1.Button1Click(Sender: TObject);
type
PDeliver = ^TDeliver;
TDeliver = record
RecvType: Byte;
SrcNo: array[0..21] of Byte;
TpUid: Byte;
TpUdhi: Byte;
Encoded: Byte;
MsgLength: word;
Msg: array[0..161] of Byte;
end;
var
D: TDeliver;
Buffer: array[0..4096] of Char;
begin
FillChar(Buffer, SizeOf(Buffer), 1);
FillChar(D, SizeOf(D), 0);
Move(Buffer, D, SizeOf(D));
ShowMessage(IntToStr(D.RecvType));
end;
还有,你确认Buffer: 是1024个Char吗?
用Move的话必须需要确认Source, Dst的内存是有效的,也就是说Buffer需要 >= SizeOf(TDeliver)