内存结构:
0018D8CC 3c 53 65 72 76 65 62 28 <Server(
0018D8D4 42 52 4F 41 44 43 41 53 <BROADCAS
0018D8DC 54 29 3E 20....         T)> a..
var
  szText:array[0..127] of char;...
szText已经获得0018D8CC 的地址
问题是如何把szText转换为可以显示的字符串,如string类型?delphi中有什么函数可以实现?

解决方案 »

  1.   

    var
      str: String;
    begin
      str := szText;
    end;
      

  2.   

    var
      stemp:string;
    begin
      stemp:=szText;
    end;
      

  3.   

    这个问题我可能问的方式有问题,我换一个问法:
    var
      szText:array[0..127] of byte;
      p:string;
    begin
      szText[0]:=53;
      szText[1]:=65;
      szText[2]:=0;//以上是内存仿真。
      p:=szText;//这步应该如何转化,因为源程序是从网络接收的数据,是C格式的字符串。如果szText:array[0..127] of char这样定义
    则p:=szText后,会出现乱码。应该如何解决?
      

  4.   

    var
      szText:array[0..127] of byte;
      p:string;
    begin
      szText[0]:=53;
      szText[1]:=65;
      szText[2]:=0;//以上是内存仿真。
      p:=inttostr(szText);//
      

  5.   

    var
      szText:array[0..127] of byte;
      p:string;
    begin
      szText[0]:=53;
      szText[1]:=65;
      szText[2]:=0;//以上是内存仿真。
      p:=inttostr(szText[0]);//sztext是数组,要有下标
      

  6.   

    var
      szText:array[0..127] of byte;
      p:string;
    begin
      szText[0]:=53;
      szText[1]:=65;
      szText[2]:=0;//以上是内存仿真。
      p:=PChar(@szText[0]);
      

  7.   

    Delphi是什么版本?2009?2010?把szText:array[0..127] of char;这个定义改为szText:array[0..127] of AnsiChar;试试看。
      

  8.   

    var
      szTest: array [0..127] of AnsiChar;
      s: AnsiString;
    begin
      ......
      SetLength(s, SizeOf(szTest));
      Move(szTest[0], Pointer(s)^, SizeOf(szTest));
      ShowMessage(s);
    end;
      

  9.   

    var
      szText:array[0..127] of byte;
      p:string;
    begin
      szText[0]:=53;
      szText[1]:=65;
      szText[2]:=0;//以上是内存仿真。
      p:=PChar(@szText[0]);
      

  10.   

    字符数组向 String 类型转换的时候,要慎用PChar,因为在字符数组中,可能存在#0字符,并且是有效地字符,除非你能保证#0之后的字符都是无效的(这种情况下必须使用PChar转换才能正确得到有效字符串),否则,只能是使用move或者copy将字符数组中的内容复制到String中。