比如MidStr、MidBStr,LeftStr、LeftBStr,RightStr、RightBStr等等,是跟字符串的编码有关吗?

解决方案 »

  1.   

    6.4. Модуль StrUtils
    Для поддержки multibyte character set (MBCS) в модуль StrUtils внесены следующие изменения:
    · Ранее, функции LeftStr, RightStr и MidStr каждая имели тип параметра AnsiString и тип возврата и не поддерживали MBCS строки. Каждая из этих функций теперь заменена парой перегруженных функций, одна возвращает AnsiString, а другая принимает и возвращает WideString. Новые функции корректно обрабатывают MBCS строки. Эти изменения делает непригодным код, использовавший эти функции для записи и извлечения байтовых значений в AnsiStrings. Такой код должен быть пересмотрен для использования с помощью новых байт ориентированных функций, описанных ниже.
    · Новые функции LeftBStr, RightBStr и MidBStr предоставляют доступ для манипуляций на байтовом уровне, ранее предоставляемый функциями LeftStr, RightStr и MidStr.
    · Новые функции AnsiLeftStr, AnsiRightStr и AnsiMidStr аналогичны новым AnsiStr LeftStr, RightStr и MidStr функциям, за исключением, что они не перегружены эквивалентными WideString функциями. Модуль StrUtils имеет новую функцию для поиска, название PosEx.
    俄文我也看不懂~~哈哈~~
    MidBStr()、LeftBStr()、RightBStr()是Delphi7才有的函数~~
    估计是用来支持MBCS!~~比如:
    MidStr('一二三四', 1, 2) = '一';
    MidBStr('一二三四', 1, 2) = '一二';就是说在MBCS中一个汉字就是一个字符!~~还没有安装Delphi7呢!~~汗!~~
      

  2.   

    试了一下,刚好反过来,呵呵。又看了看帮助,midstr按字符取,midbstr按字节取,但是length又没有一个lengthb来对应,真奇怪,我遇到这种问题midstr(q,2,length(q)-1)结果跟q一样,q是一个ansi长字符串。
      

  3.   

    其实直接用WideString类型也可以实现~~Length('你好') = 4
    Length(WideString('你好')) = 2自己做测试就知道了!~~
    嘻嘻~~
    自己最能帮助自己!~~