Показать сообщение отдельно
Старый 26.07.2007, 15:22   #6  
CDan is offline
CDan
Участник
 
23 / 10 (1) +
Регистрация: 17.11.2005
Выяснилось, что при выполнении функции evalBuf с некорректным выражением в качестве аргумента (например, с нечисловыми символами), молча прерывается выполнение текущего класса (формирование отчета, например).

Приведенный ниже пример работает и для некорректных выражений, и для случаев деления на 0:

X++:
    real getResult(str _function)
    {
        XPPCompiler comp=new XPPCompiler();
        real        ret;

        _function = 'real result(){return ' + _function + ';}';
        if(comp.compile(_function))
        {
            try
            ret = runBuf(_function);
            catch (Exception::Error)
                infolog.clear();
        }
        return ret;
    }
Tnx 2 Kashperuk