procedure Tfrmmain.TcpServer1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var 
strData:string;
len:integer;
begin
     try
        strdata:='';
        len:=Socket.ReceiveLength;
        FillChar(ReceiveBuffer,sizeof(ReceiveBuffer),0);
        socket.ReceiveBuf(ReceiveBuffer,len);
        setlength(strdata,len);
        move(ReceiveBuffer[0],strdata[1],len);
        listbox3.Items.Add(strdata);//显示乱码
     except
     end;
end;

解决方案 »

  1.   

    1.建议Move到PChar类型的变量中(前提是你的PChar内存已申请)
    2.是否乱码取决于你所发送的东西,如果发送的是十六进制数据,直接按字符串显示是不正确的
      

  2.   

    StrToInt('$'+2个字符)就转成10进制了。
      

  3.   

    ReceiveBuffer 设置成byte 数组
    然后每个数据用char(ReceiveBuffer[i])转化下,再连成字符串
      

  4.   

    move部份是没有问题的
    我想问题出在你接收的ReceiveBuffer部份
      

  5.   

    楼主可怜不知道要做什么?socket.ReceiveText 就好了。
      

  6.   

    STRING 前要SETLENGTH,使用MOVE的时候