Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Приколы с 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 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо