AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.11.2014, 12:12   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
я обычно проверяю так: если enum2str(enumValue) дает пустую строку, значит, предшествующий вызов enumValue = str2enum(...) завершился неудачно, стало быть, метка значения енума, переданная функции str2enum(), была неправильная.

PS. Технически при невозможности по метке определить значение енума функция str2enum() возвращает число 255, при том что максимальное число для значения енума - 250. Но зашивать в код такие особенности реализации типа if (any2int(enumValue) > 250) - это как-то совсем некрасиво, к тому же все может измениться в последующих версиях системы.

Последний раз редактировалось gl00mie; 06.11.2014 в 12:17. Причина: PS
За это сообщение автора поблагодарили: Logger (3), wojzeh (1).
Старый 06.11.2014, 15:10   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Но зашивать в код такие особенности реализации типа if (any2int(enumValue) > 250) - это как-то совсем некрасиво, к тому же все может измениться в последующих версиях системы.
С другой стороны, можно понадеяться на то, что в следующих версиях не забудут поправить строчку
X++:
#define.axdUnknownEnumValue(255)
в макросе Axd... Или это наивно?
За это сообщение автора поблагодарили: mazzy (2), gl00mie (1), S.Kuskov (1).
Старый 07.11.2014, 17:43   #3  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
681 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от gl00mie Посмотреть сообщение
я обычно проверяю так: если enum2str(enumValue) дает пустую строку, значит, предшествующий вызов enumValue = str2enum(...) завершился неудачно, стало быть, метка значения енума, переданная функции str2enum(), была неправильная.

PS. Технически при невозможности по метке определить значение енума функция str2enum() возвращает число 255, при том что максимальное число для значения енума - 250. Но зашивать в код такие особенности реализации типа if (any2int(enumValue) > 250) - это как-то совсем некрасиво, к тому же все может измениться в последующих версиях системы.
это не совсем то. нужно не по метке найти значение, а по name. но я так понимаю, нет стандартных функций для этого, и единственный вариант это перебор внутри цикла по всем элементам перечисления через DictEnum.
__________________
Felix nihil admirari
Старый 07.11.2014, 21:40   #4  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от wojzeh Посмотреть сообщение
нет стандартных функций для этого, и единственный вариант это перебор внутри цикла по всем элементам перечисления через DictEnum.
Да ну, зачем цикл... вот так, например:
X++:
    info(strfmt('%1', new DictEnum(enumNum(SysDimension)).symbol2Value("Purpose")));
Старый 14.11.2014, 00:38   #5  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
681 / 517 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от Ruff Посмотреть сообщение
Да ну, зачем цикл... вот так, например:
X++:
    info(strfmt('%1', new DictEnum(enumNum(SysDimension)).symbol2Value("Purpose")));
потому что для symbol2Value это метка, а не name.
__________________
Felix nihil admirari
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:47.