我用spcomm采集数据,返回的是十进制ascii码,其中有大于128的数据,转换成string时出现乱码,要怎么解决,求大家帮忙啊 
var
    hexbuf:array[1..2048] of byte;
    i:integer;
    recedata:Pchar;begin   move(buffer^,pchar(@hexbuf)^,bufferlength);
//@hexbuf 中存储的十进制ascii码  @hexbuf(36,84,50,48,49,49,48,54,50,50,49,48,52,52,176,67,48,49,164,48,176.......)        recedata:=@hexbuf;
//就是在这一步时,recedata中出现乱码( recedata=$T201106221048疌01??4595??癈02??3743??癈03??3729??癈04??3887??癈05??3396??癈 )...

解决方案 »

  1.   

    var
        hexbuf:array[1..2048] of byte;
        i:integer;
        recedata:Pchar;begin   move(buffer^,pchar(@hexbuf)^,bufferlength);
       //@hexbuf 中存储的十进制ascii码  @hexbuf(36,84,50,48,49,49,48,54,50,50,49,48,52,52,176,67,48,49,164,48,176.......)      
         recedata:=@hexbuf;
      //就是在这一步时,recedata中出现乱码( recedata=$T201106221048疌01??4595??癈02??3743??癈03??3729??癈04??3887??癈05??3396??癈 ...)
      

  2.   

    pchar是一个指向#0结束的字符串,你看看数组的最后一个字节是不是为零的
      

  3.   

    用strpas把pchar指向的字符串转成string,就会显示中文了
      

  4.   

    Delphi用的什么版本,如果是2009以上,就不要用PChar,改用PAnsiChar,因为2009以上版本默认用的是unicode字符串。
    如果不是09以上的版本,那多半就是收、发2端的字符集不一样了,用MultiByteToWideChar和WideCharToMultiByte转换一下就可以了,常用的代码页一般为936/950(简体/繁体)等等,具体就参考MSDN吧。