我在用IdUdpServer控件时,将收到的数据用ReadBuffer读到一个结构里面,然后我把这个结构Move到我定义的字节数组,结果发现几千个字节,只读出来96个,请高手帮忙!
结构是这样定义的
{------------------------------------------------}
type
StrucA = Record
id: integer;
nType: Dword;
Content: Array [0..64000] of char
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
RcvBuffer: StrucA;
ArrBuffer: Array [0..65000] of byte;
begin
Adata.ReadBuffer(StrucA,Adata.size);
if StrucA.nType=2 then
Move(StrucA,ArrBuffer,Adata.size);
{....就是在这发现只有96个字节了}
end;{------------------------------------------------}
其实我定义这个结构只是为了读取nType,如果不用结构也能读到nType的值(也就是ArrBuffer[4],4)的话就好了,我不知道怎么在Array of byte字节数组中读取一个占四个字节的Dword型数据,请大家帮帮我,谢谢!
结构是这样定义的
{------------------------------------------------}
type
StrucA = Record
id: integer;
nType: Dword;
Content: Array [0..64000] of char
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
RcvBuffer: StrucA;
ArrBuffer: Array [0..65000] of byte;
begin
Adata.ReadBuffer(StrucA,Adata.size);
if StrucA.nType=2 then
Move(StrucA,ArrBuffer,Adata.size);
{....就是在这发现只有96个字节了}
end;{------------------------------------------------}
其实我定义这个结构只是为了读取nType,如果不用结构也能读到nType的值(也就是ArrBuffer[4],4)的话就好了,我不知道怎么在Array of byte字节数组中读取一个占四个字节的Dword型数据,请大家帮帮我,谢谢!
需要一个@符号
type
StrucA = Record
id : integer;
nType : Dword;
Content: Array [0..64000] of char
end; procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
RcvBuffer: StrucA;
ArrBuffer: Array [0..65000] of byte;
begin
Adata.ReadBuffer(RcvBuffer, AData.size);
if RcvBuffer.nType=2 then
Move(RcvBuffer, ArrBuffer, AData.size);
end;
Move(RcvBuffer, ArrBuffer, Adata.size);
这里的AData.Size的值是多少? 如果它是96的话, ArrBuffer只有最前面的96个字节被Move命令赋了值。