Опасность локали в работе со стр
  • ProPro September 2010
    Перешел с 1.53 на 1.81. Думал щас заюзаю INIFILE, глянул исходники, а там для конвертации между строкой и float используется функция atof, которая учитывает локаль. На одном компе дробным разделителем может считаться точка, а на другом уже запятая. Что обязательно приведет к ошибкам преобразования дробных чисел на компах с локалью отличной от локали разработчика.

    В StringTable тоже используется локалезависимая функция isspace. Это тоже потенциальный источник ошибок.

    Можно программно установить нужную локаль, но это не очень красиво.

    Кстати, я бы не советовал использовать INIFILE еще и потому, что он записывает файл в папку программы(если я не ошибаюсь). А это потенциальный источник ошибок на висте-вин7.

    Как то не продуманы многие вещи.
  • kvakvskvakvs September 2010
    Pro said:

    Перешел с 1.53 на 1.81. Думал щас заюзаю INIFILE, глянул исходники, а там для конвертации между строкой и float используется функция atof, которая учитывает локаль. На одном компе дробным разделителем может считаться точка, а на другом уже запятая. Что обязательно приведет к ошибкам преобразования дробных чисел на компах с локалью отличной от локали разработчика.

    В StringTable тоже используется локалезависимая функция isspace. Это тоже потенциальный источник ошибок.

    Можно программно установить нужную локаль, но это не очень красиво.

    Кстати, я бы не советовал использовать INIFILE еще и потому, что он записывает файл в папку программы(если я не ошибаюсь). А это потенциальный источник ошибок на висте-вин7.

    Как то не продуманы многие вещи.


    HGE это в первую очередь рендерер.
    Он рисует, и больше ничего делать не должен.
    Эти утилитные функции если не нравятся, выбирай любую замену, в гугле поищи, или что-нибудь типа pugixml / tinyxml, там всё локаленезависимый юникод.
  • ProPro September 2010
    Это понятно. Просто предупредил других. Возможно разработчики учтут эти особенности в следующих версиях hge (если они вобще будут).
  • DekaSoftDekaSoft September 2010
    Тоже в свое время наткнулся на эти грабли. Необходимо было подключать разный ini файл - там хранились настройки уровня. Почему-то не получилось, все время открывался один и тот же файл. Плюнул, перешел на pugixml, о чем не жалею.
  • zaohua768zaohua768 October 2010
    Перешел с 1.53 на 1.81. Думал щас заюзаю INIFILE, глянул исходники, а там для конвертации между строкой и float используется функция atof, которая учитывает локаль. На одном компе дробным разделителем может считаться точка, а на другом уже запятая. Что обязательно приведет к ошибкам преобразования дробных чисел на компах с локалью отличной от локали разработчика.

    В StringTable тоже используется локалезависимая функция isspace. Это тоже потенциальный источник ошибок.

    Можно программно установить нужную локаль, но это не очень красиво.

    Кстати, я бы не советовал использовать INIFILE еще и потому, что он записывает файл в папку программы(если я не ошибаюсь). А это потенциальный источник ошибок на висте-вин7.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In Apply for Membership

In this Discussion

Who's Online (1)