Обнаружил, что функция чтения из ini-файла GetPrivateProfileString (а также другие функции из этой "области": GetPrivateProfileSection etc.) "плохо" переносят, если указать имя секции / имя ключа, содержащих русские буквы не в том регистре (т.е. строчные/прописные), как они указаны в INI-файле.
С латинскими буквами все отрабатывает отлично.
То есть, получается, что при работе этих функция имена секции/ключа для латинских букв - case insensitive, а для русских - case sensitive.
Конечно, это можно "обойти", если при использовании программы принять соглашение, что все русские имена секций/ключей следует писать в INI-файле (и обращаться к ним из программы), используя ТОЛЬКО заглавные буквы.
Но, хотелось бы, если это возможно, все-таки, избежать этого ограничения.
Интересно, это как-нибудь "лечится"? То есть, может надо "подкрутить" какие-то "национальные настройки" в Windows?
Данные о рабочей станции: Win2000, SP4, русская.
Case sensitive для русских букв в функции GetPrivateProfileString.
Модераторы: Duncon, Hawk, Romeo, Eugie
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Функция lstrcmpi() использует текущую системную локаль, и работать вроде должна. Проблема может быть в том, что они по недосмотру используют функции из C Runtime, которые работают только для символов 32-127, а для всех других применяют бинарное сравнение.
2B OR NOT(2B) = FF
Absurd, так в том-то и дело, что интересно было бы использовать функции GetPrivateProfile.... Функции-то, в принципе, удобные. Не самому ж парсить INI-шку...
То есть, можно, конечено, но опять получится "изобретение велосипеда" 


-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Не такое уж и сложное дело.BBB писал(а):Absurd, так в том-то и дело, что интересно было бы использовать функции GetPrivateProfile.... Функции-то, в принципе, удобные. Не самому ж парсить INI-шку...То есть, можно, конечено, но опять получится "изобретение велосипеда"
![]()
PS: Хотя на униксах вообще и в Джаве в частности используются case-sensitive ключи в конфигах.
2B OR NOT(2B) = FF