var
s:string;
begin
  s:='abc我爱你中国';
  memo1.Text:=inttostr(strlen(PChar(s)));
end;
得到的还是 13 啊而我希望是 8 啊
高手请赐教

解决方案 »

  1.   

    var
      s: WideString;
    begin
      s := 'abc我爱你中国';  
      memo1.Text := IntToStr(Length(s));
    end;
      

  2.   

    leapmars(流铭) 的正确。
    你要将汉字或其它非单字节字符统计为一个字符,必须用到WideString类型,它是大字符类型。支持双字节字符。
      

  3.   

    原因是一个汉字是两个字节,abc是3个加上‘我爱你中国'5×2刚好是13.其实leapmars(流铭)的也是13。
      

  4.   

    leapmars(流铭) 的正确。
    delphi默认的是ansistring.
    他只能处理单字节字符。
    我们用的是双字节字符,只能用widestring.