|
![]() |
#1 |
Участник
|
я обычно проверяю так: если enum2str(enumValue) дает пустую строку, значит, предшествующий вызов enumValue = str2enum(...) завершился неудачно, стало быть, метка значения енума, переданная функции str2enum(), была неправильная.
PS. Технически при невозможности по метке определить значение енума функция str2enum() возвращает число 255, при том что максимальное число для значения енума - 250. Но зашивать в код такие особенности реализации типа if (any2int(enumValue) > 250) - это как-то совсем некрасиво, к тому же все может измениться в последующих версиях системы. Последний раз редактировалось gl00mie; 06.11.2014 в 12:17. Причина: PS |
|
|
За это сообщение автора поблагодарили: Logger (3), wojzeh (1). |
![]() |
#2 |
Дмитрий Ерин
|
Цитата:
X++: #define.axdUnknownEnumValue(255) ![]() |
|
|
За это сообщение автора поблагодарили: mazzy (2), gl00mie (1), S.Kuskov (1). |
![]() |
#3 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() я обычно проверяю так: если enum2str(enumValue) дает пустую строку, значит, предшествующий вызов enumValue = str2enum(...) завершился неудачно, стало быть, метка значения енума, переданная функции str2enum(), была неправильная.
PS. Технически при невозможности по метке определить значение енума функция str2enum() возвращает число 255, при том что максимальное число для значения енума - 250. Но зашивать в код такие особенности реализации типа if (any2int(enumValue) > 250) - это как-то совсем некрасиво, к тому же все может измениться в последующих версиях системы.
__________________
Felix nihil admirari |
|
![]() |
#4 |
Дмитрий Ерин
|
Цитата:
Сообщение от wojzeh
![]() нет стандартных функций для этого, и единственный вариант это перебор внутри цикла по всем элементам перечисления через DictEnum.
X++: info(strfmt('%1', new DictEnum(enumNum(SysDimension)).symbol2Value("Purpose"))); |
|
![]() |
#5 |
Участник
|
потому что для symbol2Value это метка, а не name.
__________________
Felix nihil admirari |
|