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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.07.2010, 14:09   #1  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Контейнер: глючит функция conDel()
Всем доброго дня!

Столкнулся с необычными глюками вышеуказанной функции. Тестовый джоб:
X++:
static void Job350(Args _args)
{
    container   con;
    int         idx;
    ;
    /*
    con += ['001','002','003','004','005','006','007','008','009','010','011','012','013','014','015','016','017','018','019','020','021','022','023','024','025','026','027','028','029','030','031'];
    con += ['032','033'];
    con += ['034','035','036','037','038','039','040','041','042','043','044','045','046','047','048','049','050','051','052','053','054','055','056','057','058','059','060','061'];
    con += ['062','063','064','065','066','067','068','069','070','071','072','073','074','075','076','077','078','079','080','081','082','083','084','085','086','087','088','089','090'];
    con += ['091','092','093','094','095','096','097','098','099','100','101','102','103','104','105','106','107','108','109','110','111','112','113','114','115','116','117','118','119','120','121'];
    */

    /*for (idx = 1; idx <= conLen(con); idx++)
        info(conPeek(con, idx));*/

    for (idx = 1; idx <= 150; idx++)
        con = conins(con, /*conLen(con) + */1, num2str0(idx, 3));
    
    conView(con);

    con = conDel(con, 1, 105);
    conView(con);

}
Происходит наполнение контейнера разными способами, а потом удаление первых 105 элементов через ф-ю conDel().

В примере с заполнением в цикле (добавление в конец или в начало в обратном порядке - неважно) при удалении 105 элементов из 150 в контейнере остается 50 вместо 45. Причем остаются элементы с 51 по 100 (с '051' по '100'), т.е. удаление происходит не подряд.

Если закомментировать заполнение в цикле и раскрыть заполнение через '+=', то наблюдаем другой эффект: ни в какую не удаляются элементы из 2й добавляемой строчки (в данном примере это ['032','033']. 2-я строка может быть разной длины, эффект остается.

У меня больше нет слов, одни эмоции.

DAX 4.0 SP2HF1, kernel 4.0.2501.116 и 4.0.2503.836

Кстати, тема не нова. Аж в 2004 году уже поднимался вопрос:
Ошибка при работе с типом container
__________________
Андрей.

Последний раз редактировалось Dron AKA andy; 23.07.2010 в 14:12.
За это сообщение автора поблагодарили: Logger (5).
Теги
ax2009, ax4.0, container, баг, ошибка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Родительские коды в контейнер breakpoint DAX: Программирование 0 06.07.2010 12:46
контейнер: '+=' vs 'conins' небольшое исследование SHiSHok DAX: Программирование 6 18.02.2010 15:58
контейнер: += трагедия вставки пустой строки. SHiSHok DAX: База знаний и проекты 10 22.01.2008 19:01
Функция поиска подстроки, чувствительная к регистру . Есть ли такая в аксапте? ATimTim DAX: Программирование 4 13.02.2006 15:37
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09

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

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

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