anghua_778899: if ByteType(s,i) = mbSingleByte then 在delphi7中好用,但在delphi2010中不好用,是什么问题

解决方案 »

  1.   

    因为D7的string是ansistring 而2010的string是unicodestring(类似于D7中的widestring)
    ansi下 一个中文需要2个字节存储, 而ansistring最小单位字符是1字节, 所以会出现遍历到半个中文字的情况, 所以需要判断是否SingleByte
    而unicode下最小单位是2个字符, 也就是说一个中文和一个英文或一个数字都占一个字符(2字节), 也就不会出现读取半个中文字的情况, 所以无需这么判断了
    而ByteType这个函数似乎是为了unicode兼容本地ansi字符保留下来的(以前delphi说明文档上见过这么一句)
      

  2.   

    SB-CSDN 回复没法编辑
    上面有句说错了 unicode下最小单位是1字符(2字节), 不是2字符