比如我用Indy UDP控件发出去的是
7B 00 00 00 10 00 00 00
客户端的IdUDPserver在UdpRead事件中收到后怎么显示呢?
我是这样做的,但是结果完全变了,每个字节的值都变得很大,是为什么呢?////////////////////////////////////////////////
//打印收到的字节
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var  
  RcvBuffer: Array [0..100] of byte; //打印字节用
  i: integer;
  ViewStr: string;  //命令
begin
  move(pchar(@Adata)^,pchar(@RcvBuffer[0])^,Adata.Size);
  for i:=1 to Adata.Size do
  begin
    ViewStr:=ViewStr+inttohex(RcvBuffer[i],2)+' ';
  end;
  ViewStr:='接收 '+ViewStr;
  memo1.Lines.Add(ViewStr);
end;

解决方案 »

  1.   


    procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
    var
      RcvBuffer: array of Byte;
      i        : Integer;
      ViewStr  : String;
    begin
      SetLength(RcvBuffer, AData.Size);
      AData.Seek(0, soFromBeginning);
      AData.ReadBuffer(RcvBuffer, AData.Size);
      ViewStr := '接收';
      for i := 0 to AData.Size - 1 do
        ViewStr := ViewStr + ' ' + IntToHex(RcvBuffer[i], 2);
      memo1.Lines.Add(ViewStr);
      RcvBuffer := nil;
    end;