![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приколы с AnsiSameText [D5]
harisma © (2010-06-07 18:06:00)В процессе своей работы столкнулся с таким приколом:
Оказывается, если в Винде в языковых настройках установлен "Украинский" язык, то если при помощи этой функции сравниваются 2 строки в которых есть мягкий знак (а может и какие другие специфичные буквы - я не проверял), сами строки абсолютно идентичны, но находятся в разных регистрах (собственно согласно документации для этой функции это не проблема, так как функция регистронезависима), то результат будет ОТРИЦАТЕЛЬНЫЙ!!! То есть:
AnsiSameText('ФИСКАЛЬНЫЙ БЛОК', 'Фискальный блок') = False!!!
Кто с таким стыкался и какие есть решения этой проблемы (кроме приведения сравниваемых строк к одному регистру, скажем верхнему или нижнему)?
Спасибо.
Anatoly Podgoretsky (2010-06-08 17:12:00) [1]> ASCII (08.06.2010 16:53:11) [11]
KOI8-U это тоже раширение KOI8-R, где R это рашен, уже не кирилица.
ASCII (2010-06-08 16:53:00) [2]Удалено модератором
программер (2010-06-08 14:52:00) [3]AnsiSamestr?
Игорь Шевченко (2010-06-08 11:28:00) [4]
> Как можно решить данную проблему кроме как приведя сравниваемые
> строки к одному регистру?
Вызвать CompareString с нужной локалью
harisma (2010-06-08 11:12:00) [5]Ну, ваше мнение понятно. Благодарствую. А как насчет второй части моего вопроса? Как можно решить данную проблему кроме как приведя сравниваемые строки к одному регистру?
Leonid Troyanovsky (2010-06-07 19:46:00) [6]
> Anatoly Podgoretsky © (07.06.10 19:26) [6]
> Украинского языка нет.
Не повезло.
--
Regards, LVT.
Anatoly Podgoretsky (2010-06-07 19:26:00) [7]> Leonid Troyanovsky (07.06.2010 18:57:05) [5]
Украинского языка нет.
Это расширение русского, кодовой страницы 1251
Leonid Troyanovsky (2010-06-07 18:57:00) [8]
> Anatoly Podgoretsky © (07.06.10 18:56) [4]
> Смешаны буквы латинского и русского языка.
И украинского тож.
--
Regards, LVT.
Anatoly Podgoretsky (2010-06-07 18:56:00) [9]> harisma (07.06.2010 18:06:00) [0]
Смешаны буквы латинского и русского языка.
Leonid Troyanovsky (2010-06-07 18:49:00) [10]
> Игорь Шевченко © (07.06.10 18:42) [2]
> Чему тут удивляться ?
Скрипач оранжевый от зеленого отличить не может.
--
Regards, LVT.
Игорь Шевченко (2010-06-07 18:42:00) [11]Чему тут удивляться ?
Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(S1),
Length(S1), PChar(S2), Length(S2)) - 2;
для украинской страницы при LOCALE_USER_DEFAULT преобразование выполняется одним образом, для китайской, скажем, другим, для немецкой
ß и ss в каком-то случае значат одно и то же.
Медвежонок Пятачок (2010-06-07 18:23:00) [12]а что скажет AnsiCompareText ?