Показать сообщение отдельно
Старый 01.08.2009, 12:50   #6  
in.dc is offline
in.dc
Участник
 
29 / 53 (2) ++++
Регистрация: 09.04.2009
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Нет, Вы не правы - значение enum'а 0 не теряется .
Там идет проход по индексу enum'а, а затем уже по индексу инициализируется конкретное числовое значение enum'а.
X++:
for (i=1;i<=dictEnum.values();i++)
    {
        value = dictEnum.index2Value(i);
И все таки SRF прав - баг в pickEnumValue() имеет место быть.
Речь видимо шла не о нулевом значении enum'а, а о значении индекса enum'а (который валиден в интервале [0..enumcnt()-1]) - в текущей реализации метода цикл начат с 1. Цикл в pickEnumValue() должен был выглядеть:
X++:
    for (i=0;i<dictEnum.values();i++)
    {
        ...
    }
В варианте SRF было for (i=0;i <= dictEnum.values(); i++) в результате чего в список добавлялось пустая строка (при достижении равенства dictEnum.values()) с 'левым' значением.

P.S. либо так:
X++:
    for (i=1;i<=dictEnum.values();i++)
    {
        value = dictEnum.index2Value(i-1);
        ...
        names += dictEnum.index2Label(i-1);
        ...
    }
__________________
Dynamics AX 4.0 SP2