2

ある種の X++ スクリプト エグゼキュータを構築しようとしているため、runbuf 関数をいじってみました。渡した X++ コードが有効である限り機能しますが、無効なコードを渡すと、コードをコンパイルできないというエラーがスローされますが、それ以上の詳細はありません。たとえば、次のコードを試すと

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

エラーで失敗します

「void dynAdd(int lhs, int rhs) { return lhs + rhs; }」をコンパイルできません。

エラーに関する詳細情報を取得する方法はありますか?

前もって感謝します

4

1 に答える 1

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());
    }
}

情報ログに以下のエラーが発生します

*** エラー: 82、オペランドは関数の型と互換性がありません。

于 2016-07-17T12:01:52.347 に答える