Выяснилось, что при выполнении функции 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