我是在D6中用length函数得到一串汉字(包括标点符号)的长度后放到一个byte类型中去,奇怪的问题就发生了,用length得到的长度和我抓包发现的长度相差6字节,而我showmessage那个byte的值和length得到的长度一样,当字符串为字母时又是对的,不知道是怎么回事!!!!!????

解决方案 »

  1.   

    LENGTH得到的长度和你的STRING定义有关;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      test1:string;
      test2:widestring;
    begin
      test1:='测试123';
      test2:='测试123';
      showmessage(inttostr(length(test1)));  //得到7
      showmessage(inttostr(length(test2)));  //得到5
    end;
      

  2.   

    var
      test1:string;
      test2:widestring;
    begin
      test1:='测试123';
      test2:='测试123';
      showmessage(inttostr(sizeof(test1)));  //得到7
      showmessage(inttostr(sizeof(test2)));  //得到5
    end;
      

  3.   

    大家注意:
    length与sizeof的区别.
      

  4.   

    var
      test1:string;
      test2:widestring;
    begin
      test1:='测试123';
      test2:='测试123';
      showmessage(inttostr(sizeof(test1)));  
      showmessage(inttostr(sizeof(test2)));  
    end;
    长度一样了.