2

Ich versuche, eine Art von X ++ Skript-Executor zu bauen und damit herumspielen mit der Runbuf-Funktion. Es funktioniert, solange der X ++ Code, den ich übergebe, gültig ist, aber wenn ich ungültigen Code übergebe, dann wirft es nur einen Fehler, dass es nicht in der Lage ist, den Code zu kompilieren, aber keine weiteren Details. Zum Beispiel, wenn ich versuche, den folgenden CodeAusführlicheren Fehler von Runbuf-Funktion in Dynamics AX

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

es nicht mit dem Fehler

Unable to compile "void dynAdd(int lhs, int rhs) { return lhs + rhs; }".

Gibt es einen Weg, um mehr Informationen über den Fehler zu erhalten?

Vielen Dank im Voraus

Antwort

6

Sie XppCompiler dafür wie so

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

die

im folgenden Fehler in der infolog führt

*** Error: 82, The operand is not compatible with the type of the function.

+1

Ehrfürchtig verwenden - thx :) Es wird akzeptiert sobald es möglich ist. – NoaHammer