1. C++ / Говнокод #9272

    +994

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    int GetLocaleImageIndexById(LCID LocaleID)
    {
    	CString Id = CPiCultureInfo::GetSpecific(LocaleID).GetISO3166Country().MakeLower();
    	if (Id == "ad") return 0;
    	if (Id == "ae") return 1;
    	if (Id == "af") return 2;
            .
            .
            .
            .
            .
    	if (Id == "zm") return 245;
    	if (Id == "zw") return 246;
    	return -1;
    }

    Слов нет

    Запостил: alex_devel, 31 Января 2012

    Комментарии (19) RSS

    • Ну и где тут C++?
      Ответить
    • и к чему переделал в итоге?
      в ассоциацию (dword:)id -> результат или iso кодов стран -> результат?
      Ответить
      • Все проще, есть набор Ключ -> Значение. Вот собственно и ответ)
        Ответить
        • эм
          я и спросил, что именно было взято как "Ключ"?
          Ответить
          • аа сорри).
            iso кодов стран -> результат.
            Ответить
            • ну а можно и без строк
              struct iso {
                  enum {
                      ru = 1049,
                      us = 1033,
                      ua = 1058,
                      // etc
                  };
              };
              
              int get_index(::LCID id)
              {
                  static ::LCID indexes[] = {iso::ru, iso::ua, iso::us, ...};
                  static ::LCID const * end = indexes + sizeof(indexes)/sizeof(::LCID);
                  ::LCID const * found = std::find((::LCID const *)indexes, end, id);
                  return (found != end) ? found - indexes : -1;
              }
              Ответить
              • А если инитим читаем из xml?
                Или еще откуда?
                Ответить
                • в начальном варианте ничего про динамическое состояние ассоциаций не было, там решалась задача - давайте ка получим index по известным захардкоженным соответствиям
                  Ответить
                  • согласен). при начальной постановке решение гуд!
                    Ответить
    • return CPiCultureInfo::GetSpecific(LocaleID).GetISO3166Country().MakeLower() == "ru" ? 0 : 1;

      There, I fixed it.
      Ответить
      • Что-то вы с типами напутали. Надо int вернуть
        Ответить
        • ? 0 : 1 же. 0 - Русский, 1 - английский, остальные страны не нужны.
          Ответить
          • Ха. На айпаде надо было строку прокрутить. Показывал только : "return CPiCultureInfo::GetSpecific(LocaleID).Ge tISO3166Country().MakeLower()"
            Ответить
    • Похоже, кто-то не слышал про std::map.
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий