簡體   English   中英

如何評估在 X++ 中以字符串形式給出的布爾表達式 [AX 2012]

[英]How do I evaluate a boolean expression given as a String in X++ [AX 2012]

我有一個場景,我想評估一個以字符串形式給出的布爾表達式。

例如,“1==4”在傳遞給某個函數時會評估為/返回 FALSE。

類似地,“1==1”在傳遞給同一個函數時將評估為 TRUE。

如果可以這樣做,那么我肯定會想要某種方式來評估動態布爾表達式。 例如,“workHours==4”是字符串表達式,workHours 是一個變量。

如果您知道,請告訴我任何解決方案。 謝謝。

有多種方法可以通過 .NET(例如,使用 XLNT 框架)和 X++ 中的一些內部函數從文本中評估 X++ 表達式。 但是我很確定您可以通過更干凈的方法獲得相同的解決方案。 例如,您可以將一個容器傳遞給一個函數,然后比較它們的值,或類似的東西。

如果您仍然想這樣做,請查看 X++ 中的runbuf函數。

http://msdn.microsoft.com/en-us/library/aa656300.aspx

自學答案:

這是代碼示例,您可以如何操作。

static void Job22(Args _args)
{

 str expr = 'ab==2';
 str method = @'boolean eval(int ab){return ' + expr + ';}';
 boolean result;
 ;
 result = runBuf(method, 5);
 info (strfmt("Calculation result is %1", result));

}

這可能是您使用的更好示例,您可以輕松地更改expression

static void RunBufExample()
{
    str                 expression = '2==1';
    str                 func = 'boolean myFunc() {return ' + expression + ';}';
    boolean             retVal;       
    new ExecutePermission().assert();
    retVal = runBuf(func);
    CodeAccessPermission::revertAssert();
    info(strFmt("%1", retVal));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM