Показать сообщение отдельно
Старый 07.08.2008, 18:42   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
X++:
static void Job16(Args _args)
{//DSPIC
    UtilElements    utilElements;
    ProjectNode     projectNode;
    Source          projectSource;
    ;
    
    while select utilElements
       where utilElements.recordType == UtilElementType::SharedProject 
          || utilElements.recordType == UtilElementType::PrivateProject
    {
        projectNode = xUtilElements::getNode(utilElements);

        if (projectNode)
        {
            projectNode = projectNode.loadForInspection();
 
            projectSource = projectNode.AOTgetSource(); //получаем проект в виде строки
            
            //элементы AOT в projectSource вписаны по шаблону: Node: treeNodePath
        }
    }
}
Остаестся распарсить projectSource и найти все строки, начинающиеся с Node: ...
Это наверное самый быстрый способ пробежаться по проектам и проекту.
Второй вариант (стандартный), работать с treeNode'ами: firstChild, NextChild и т.д. - будет на порядок медленнее. В этой же категории можно заюзать класс TreeNodeTraverser для облегчения "лазанья" по тринодам

Edit: Есть ещё один момент. Если проект лежит на разных слоях, то в таблице utilElements встретятся дубликаты, поэтому нужно сохранять выбранные имена проектов для предотвращения повторного пробега по ним. Способ быть может чуть сложнее приведенного выше, но тут выигрыш в скорости отработки.

Последний раз редактировалось DSPIC; 07.08.2008 в 18:55. Причина: Уточнение
За это сообщение автора поблагодарили: KpecT (1).