在开发联通 sgip,通过官方的API,得到短信回执信息,其中有个信息是r.userNumber,其类型是packed   array[1..21]   of   char。
奇怪的是,在这个信息后不能再叠加任何的字符串,一叠加就出现奇怪的现象。
我直接用memo1输出r.userNumber,结果是:
8613312822655如果我str1:=r.userNumber+'|asdsad';后,再输出,结果还是:
8613312822655这到底是怎么回事,我该如何解决?

解决方案 »

  1.   

    可以这样
      strCopy(@r.userNumber[14], pchar('|asdsad'));或者改
      packed  array[0..21]  of  char
      

  2.   

    改成:
    str1 := String(PChar(r.userNumber)) + '|asdsad';
      

  3.   

    str1 := String(PwideChar(r.userNumber)) + '|asdsad';
      

  4.   

    delphi的
    string比C/c++的 char* 强大
    支持#0特殊字符 (不再象c/c++下用\0标志字符串结尾了)但是显示的时候
    是windows显示的(因为memo控件是windows自带的,是c/c++写的,所以\0后的截断了!这是关键)所以 要解决这个问题就要避免字符串中包含\0字符
    str1:=r.userNumber;          //此时str1内容为 8613312822655#0#0#0#0...#0#0
    str1:=trim(str1)+'|asdsad';  //str1内容为 8613312822655|asdsad 
    建议lz和楼上的多看一些基础的
    尤其是2楼的等级那么高了,汗一个。。
      

  5.   

    str1 := String(PChar(r.userNumber)) + '|asdsad';
      

  6.   

    str1 := String(PChar(r.userNumber)) + '|asdsad';