Const['0','1',...............]将这些单个字符放到这里面来,当你分割一段后,判断最后一个字符是否在这个里面,不在,肯定是汉字出现在问,再向前移一位,那样就接着再向后面做,思想是这样的,当然了,现实是有很多意外因素,这里就要求你的Const[]中要设全!
好比你取的第一字符串是这样的'A是是是是',那么你取到一个整数时一定会把汉字割开了,这时你通过以上判断,发现不是一个单字符,你只要向前移一位,就OK了!希望我的想法能对你有点作用!

解决方案 »

  1.   

    Const['0','1',...............]将这些单个字符放到这里面来,当你分割一段后,判断最后一个字符是否在这个里面,不在,肯定是汉字出现在问,再向前移一位,那样就接着再向后面做,思想是这样的,当然了,现实是有很多意外因素,这里就要求你的Const[]中要设全!
    好比你取的第一字符串是这样的'A是是是是',那么你取到一个整数时一定会把汉字割开了,这时你通过以上判断,发现不是一个单字符,你只要向前移一位,就OK了!希望我的想法能对你有点作用!
      

  2.   

    用StrByteType函数判断s[250]是一个单字节字符、双子节的第一个字符、双子节的第二个字符,如果是双子节的第一个字符(mbLeadByte),则从1到249取子串,否则从1到250取子串
      

  3.   

    这也是一种解决的方法,但是感觉怪怪的。
    感谢 luoshumeng(乡村意外) 
    来者有分!!!
      

  4.   

    用StrByteType判断时要将string型的转成PCHAR,index是249。上面所写的s是一个string。
      

  5.   

    bobfang(匆匆过客) 
    兄弟真是无知呀,竟然不知道有这个函数。
    StrByteType怎么用?能不能具体一点?比如返回值、参数等
      

  6.   


    iStart:=1;
    iCount:=0;
    repeat
      iCount:=250;
      if StrByteType(pchar(s),istart+iCount-2)=mbLeadByte then
        iCount:=249;
      s1:=copy(s,iStart,iCount);
      iStart := iStart+iCount;
      ...
    until iStart>length(s);