狠急!!多谢!!我是从TMemo控件中取出的字符串。
其中,一个汉字占两个字节,一个英文字符占一个字节,回车占两个字节。
我现在打算按要求对其重新编排,所以必须要对每一个字符是什么类型进行判断才行。请那位大虾执教!!我对字符串操作这方面也不是很熟悉,多多指教!
怎样实现才好?

解决方案 »

  1.   

    可以使用WideString,就不会出现汉字被分成两个ASCII码的问题
      

  2.   

    function ByteType(const S: string; Index: Integer): TMbcsByteType;IsDBCSLeadByte告诉你一个非常有用的函数。bytetype 它可以判断一个字符串中,某个 Char 是单个字母,还是双字节的前一位或后一位。mbSingleByte 单字母mbLeadByte 双字节第一位mbTrailByte 双字节第二位
      

  3.   

    WideString都怎么使用阿?有哪些可用的方法?计算长度,插入字符,,,能说详细些马??
      

  4.   

    在TMemo.Text := 'sdfdf' + #13 + '234234';这个#13在TMemo显示为空格而不是回车,是不是它的编码也和#13对应的不一样了,那我怎么判断阿?
      

  5.   

    var ans : AnsiString;
    wis : WideString;
    Begin
      wis := WideString( ans );
    End;
     
      

  6.   

    to tlihui(阿南) :
    只是靠判断ASCII码值那就会死人地,一个汉字两个ASCII码值,我怎么知道它是英文字副还是应该组合在一起呢
      

  7.   

    跟String一样用,只不过WideString占两个字节罢了!
      

  8.   

    zzh26(瞌睡) 说得对,用ByteType函数。我的错误就是用它解决的。
    我还写了个简单的函数:
    function GetVolidStr(const Value: String): String;
    var
      ResultStr : String;
    begin
      if Length(Value) > 0 then
      begin
        if ByteType(Value, Length(Value)) = mbLeadByte then
          ResultStr := Copy(Value, 1, Length(Value)-1)
        else
          ResultStr := Value;  
      end
      else ResultStr := '';
      Result := ResultStr;
    end;
    你只需在调用GetVolidStr函数时,传你可能出错的字符串即可。
      

  9.   

    http://expert.csdn.net/Expert/topic/2440/2440518.xml?temp=.4050867
    http://expert.csdn.net/Expert/topic/2365/2365691.xml?temp=.1057093
    http://expert.csdn.net/Expert/topic/2324/2324672.xml?temp=.884762
    http://expert.csdn.net/Expert/topic/2295/2295888.xml?temp=.9960443
    http://expert.csdn.net/Expert/topic/2055/2055563.xml?temp=.842251
    http://expert.csdn.net/Expert/topic/2295/2295888.xml?temp=.455456
      

  10.   

    那在widestring里面判断某一个字符是否是回车怎么实现?? 感觉#13在Tmemo中不起作用,我想从Tmemo导出的回车字符也不会为#13吧。
    还有怎样任意读取字符串中的某一个字符?如何判断到了字符串的结尾
      

  11.   

    在windows中回车是两个字符#13#10
      

  12.   

    回车不是#13,而是#13#10两个字符。
    同意 wangl() 的。
      

  13.   

    #13#10?
    为什么
    Memo1.Text := 'asdasd' + #13#10 + 'asdasd';
    没有显示换行呢?显示了两个空格???