请看下列代码:var
  strA:AnsiString;
begin
  strA:='中国1234' ;
  Label1.Caption:=IntToStr(Length(strW));//结果为6
  Label2.Caption:=LeftStr( strW,4); //结果为'中国12'也就是说:对于AnsiString类型,一个汉字和一个字母的长度都为1,我现在需要计算一段文字所占的行数,因此需要‘汉字的长度为2,而英文字母的长度为1',而且在取子串的时候一个汉字的长度应为2,且不会取到半个汉字,请问如何做?

解决方案 »

  1.   

    你定义的strW为:WideString————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    就是WideString的问题。它认为一个汉字就是一个单位可以这样做。
    showmessage('我'[1]);
      

  3.   

    你上面定义的变量是strA,而下面调用的是StrW,如果你调用StrA,就没有问题了
      

  4.   

    借楼主宝地一用
    鉴别CSDN星星的含金量http://expert.csdn.net/Expert/topic/2147/2147062.xml?temp=.9299433