AlekXL
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: WideString is also useful when working with Microsoft's Component Object Model (COM). WideString values are easily converted to or from the BSTR values used in COM. | там вообще никакой конверсии не происходит. WideString - это BSTR с высокоуровневой оберткой. Но вопрос не об этом: вопрос, как (начисто) сломать совместимость WideString с UnicodeString в Windows? X11 Цитата: чушь Код: CompareText('Йцукен', 'йцукен'); | возвращает "-32" под Виндой, и под Адрюшей тож. X11, ты бы хоть в исходник заглянул. Frodo_Torbins Цитата: AnsiCompareText вызывает виндовую CompareString с параметром LOCALE_USER_DEFAULT - тоесть алгоритм сравнения строк зависит от текущей локали. Если же вас и это не устраивает, то наверное стоит воспользоватся CompareStringEx напрямую. | все мимо. Под виндой я и сам умею. Вопрос был -- платформенно-независимый вариант. Вообще AnsiCompareText работатет неплохо CompareText('Ä', 'ä', louserLocale) ; CompareText('Йцукен', 'йцукен', louserLocale); выдают нуль на дефолтной(русской) локали. То есть есть надежда, что не только для кириллицы работает сравнение. Вопрос в collation.. То есть, скажем, в упорядочении. Нет платформенно независимого варианта, сортирующего инвариантно, и при этом без учета регистра... -- Впрочем, есть Код: SetUTF8CompareLocale('en_US'); | Устанавливаешь локаль, и -готово. При этом строки сравниваются без учета регистра(включая и киллицу, если знаете, -- предложите вариант посложнее). При этом упорядочение будет по единой локали на любом устройстве (в рамках одной системы, поскольку Win,OSX и ICU упорядочивают по-разному, подозреваю). Недостаток один -- только на POSIX системах работает. | Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 05:26 11-06-2014 | Исправлено: AlekXL, 06:39 11-06-2014 |
|