发送端
使用语言:C++
定义了一个结构体,其中包含了
BYTE usrName[10];发送时赋值:
UsrAuthorityCom.usrName[0]='0';//usr 1~10B//合法的User :0123459  //ASCII表 ‘0’=48  '0123459'        UsrAuthorityCom.usrName[1]='1';
UsrAuthorityCom.usrName[2]='2';
UsrAuthorityCom.usrName[3]='3';     
UsrAuthorityCom.usrName[4]='4';
UsrAuthorityCom.usrName[5]='5';
UsrAuthorityCom.usrName[6]='9';接收端:
使用语言:Delphi
跟发送端同一个结构体,相应的声明为
userName: array[0..9] of Char;var
  username: string;
begin
  username := PChar(@结构体.UseName);
  ....
end;
为什么有个时候是正常的“0123459”,有个时候是“0123459峰”后面有乱码呢,是不是发送端没有加上结束符造成的还是接收端的处理方式有问题,赐教

解决方案 »

  1.   

    userName: array[0..9] of Char; 
    赋值前有没清空
      

  2.   

    初始化userName,fillchar(userName,10,0)
      

  3.   

    有进行初始化
    FillChar(RevStruct,SizeOf(RevStruct),#0);
      

  4.   

    建议如下:
    var
      P: array[0..10] of Char; 
      S: String;
    begin
      FillChar(P, #0);
      Move(userName[0], P[0], Length(userName));
      S := StrPas(@P[0]);
    end;
      

  5.   

    Delphi中字符串是一个#0结束的,所以最好要多定义一个字节,这样在转换成字符串过程中不会出问题。