Страница 1 из 1

Case sensitive для русских букв в функции GetPrivateProfileString.

Добавлено: 09 мар 2007, 11:12
BBB
Обнаружил, что функция чтения из ini-файла GetPrivateProfileString (а также другие функции из этой "области": GetPrivateProfileSection etc.) "плохо" переносят, если указать имя секции / имя ключа, содержащих русские буквы не в том регистре (т.е. строчные/прописные), как они указаны в INI-файле.
С латинскими буквами все отрабатывает отлично.
То есть, получается, что при работе этих функция имена секции/ключа для латинских букв - case insensitive, а для русских - case sensitive.

Конечно, это можно "обойти", если при использовании программы принять соглашение, что все русские имена секций/ключей следует писать в INI-файле (и обращаться к ним из программы), используя ТОЛЬКО заглавные буквы.
Но, хотелось бы, если это возможно, все-таки, избежать этого ограничения.

Интересно, это как-нибудь "лечится"? То есть, может надо "подкрутить" какие-то "национальные настройки" в Windows?

Данные о рабочей станции: Win2000, SP4, русская.

Re: Case sensitive для русских букв в функции GetPrivateProfileString.

Добавлено: 12 мар 2007, 13:37
Absurd
Функция lstrcmpi() использует текущую системную локаль, и работать вроде должна. Проблема может быть в том, что они по недосмотру используют функции из C Runtime, которые работают только для символов 32-127, а для всех других применяют бинарное сравнение.

Re: Case sensitive для русских букв в функции GetPrivateProfileString.

Добавлено: 12 мар 2007, 13:48
BBB
Absurd, так в том-то и дело, что интересно было бы использовать функции GetPrivateProfile.... Функции-то, в принципе, удобные. Не самому ж парсить INI-шку... :( То есть, можно, конечено, но опять получится "изобретение велосипеда" :(

Re: Case sensitive для русских букв в функции GetPrivateProfileString.

Добавлено: 12 мар 2007, 15:05
Absurd
BBB писал(а):Absurd, так в том-то и дело, что интересно было бы использовать функции GetPrivateProfile.... Функции-то, в принципе, удобные. Не самому ж парсить INI-шку... :( То есть, можно, конечено, но опять получится "изобретение велосипеда" :(
Не такое уж и сложное дело.
PS: Хотя на униксах вообще и в Джаве в частности используются case-sensitive ключи в конфигах.