|
|
#1 |
|
Участник
|
Переполнение исполнения кода
Всем привет,
При выполнении джоба возникает ошибка времени выполнения "Переполнение во внутреннем стеке исполнения кода" если NestingLevel больше 400. Код: static void JobNestingLevel(Args _args)
{
ClassA a, b;
int i;
#define.NestingLevel(401)
;
i = 0;
a = new ClassA();
while (i < #NestingLevel)
{
b = new ClassA();
a.addChild(b);
i = i + 1;
}
}
//Такой вот ClassA:
class ClassA
{
ClassA child;
void addChild(ClassA _node)
{
;
if (child)
{
child.addChild(_node);
}
else
{
child = _node;
}
}
}используются методы подобные addChild и возникают некоторые траблы, у кого-нибудь повторяется? |
|
|
|
|
#2 |
|
NavAx
|
Да, есть ограничение на количество вложенных вызовов. Рекурсию лучше не использовать, т.к. приводит к трудновоспроизводимым багам
__________________
Isn't it nice when things just work? |
|
|
|
|
#3 |
|
Участник
|
Установка самого последней версии MDAC (Microsoft Data Access Components) расширяет этот предел, насколько мне известно. (если база MS SQL)
Это не решение, но может удовлетворить вашу конкретную задачу. |
|
|
|
|
#4 |
|
Участник
|
Думаю что MDAC может повлиять только на вложенность рекурсий на скуле и врядли на вложенность рекурсий в Аксапте.. Вообще для аксапты этот предел достаточно большой - какая у вас вложенность структуры интересно??
|
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от MironovI
Вообще для аксапты этот предел достаточно большой
Цитата:
Сообщение от MironovI
какая у вас вложенность структуры интересно??
вроде как стандартный, класс RAssetFamilyTreeNode строит структуру рекурсией, достигает количества рекурсивного вызова 400 и не зависая и не ругаясь ошибкой просто прекращает выполнять код, аксапта 3.00 сп4. |
|
|
|
|
#6 |
|
Moderator
|
Что-то похожее было при работе со спецификациями, но там предел наступал гораздо раньше.
|
|
|