读书人

怎么将记录转为字节数组

发布时间: 2012-05-02 15:36:04 作者: rapoo

如何将记录转为字节数组?

Delphi(Pascal) code
procedure TMainForm.login;  var  buffer:TBytes;//字节数组  Login:TPRLogin;//记录begin  SetLength(buffer,SizeOf(TPRlogin));  StrPCopy(login.ID,Edit.Text);  Login.flag:=PSKLogin;  CopyMemory(@buffer,@login,SizeOf(login));//明显的拷贝方式错误,但是不知道如何去转换,请指教。  ShowMessage(IntToStr(SizeOf(Login)));  UDP.SendBuffer(Edit1.Text,StrToInt(Edit2.Text),buffer);end;

怎么去转换,还有怎么去还原?

[解决办法]
上面看错了,以为你没setlength,其实是你的CopyMemory用错了,因为TBytes其实是指错,所以你调CopyMemory时再@buffer取地址一次是不对的,改成这样:
CopyMemory(Pointer(buffer),@login,SizeOf(login));

其实用rawtobytes更简单,你上面的代码改成:
procedure TMainForm.login;
var
Login:TPRLogin;//记录
begin
StrPCopy(login.ID,Edit.Text);
Login.flag:=PSKLogin;
UDP.SendBuffer(Edit1.Text,StrToInt(Edit2.Text),rawtobytes(Login,SizeOf(TPRLogin)));
end;

读书人网 >.NET

热点推荐