Moderator
Регистрация: 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.
|