来自Dynamics AX中runbuf函数的更详细错误

时间:2016-07-17 11:58:59

标签: axapta dynamics-ax-2012 x++ dynamics-ax-2009 dynamics-ax-2012-r3

我尝试构建某种X ++脚本执行器,因此可以使用runbuf函数。 只要我传入的X ++代码有效,它就可以工作,但是当我传递无效代码时,它只会抛出一个错误,它无法编译代码但没有进一步的细节。 例如,当我尝试以下代码时

runbuf('void dynAdd(int lhs, int rhs) { return lhs + rhs; }');

失败并显示错误

  

无法编译" void dynAdd(int lhs,int rhs){return lhs + rhs;   }"

有没有办法获取有关错误的更多信息?

提前致谢

1 个答案:

答案 0 :(得分:6)

您可以使用XppCompiler,因此

static void DynamicXppTest(Args _args)
{
    str         dynamicXpp;
    int         result;
    XppCompiler xppCompiler;
    ;

    dynamicXpp = 'void dynAdd(int lhs, int rhs) { return lhs + rhs; }';

    // previous runbuf - style
    // 
    // result = runbuf(dynamicXpp, 3, 4);
    // info(strfmt("result = %1", result));

    xppCompiler = new XppCompiler();
    if (xppCompiler.compile(dynamicXpp))
    {
        result = xppCompiler.execute(3, 4);
        info(strfmt("result = %1", result));
    }
    else
    {
        error(xppCompiler.errorText());
    }
}

将导致infolog中出现以下错误

  

***错误:82,操作数与函数类型不兼容。