2009-04-05 17 views
0

は、私はいくつかの式を評価するためにMicrosoftスクリプトコントロールを使用して、いくつかのC#のコード持っている「の場合」を使用するMicrosoftスクリプトコントロールを評価する:(C#の経由)表現

を(txtExは、単純なテキストフィールドである)

数値式 "6 + 4"、 "cos(34)"、 "abs(-99)"、 "round(1.234,2)"などは細かい。

ブール式 "trueまたはfalse" 、 "1 = 2"は細かいです

Bu t単純な「if」をどのように評価できますか?私は "if(true、2,3)"、 "if(true)then 2 else 3"、 "if(true)then 2 else 3 endif"を試みました。

誰か簡単な条件式を評価するのに手伝ってもらえますか?どんな助けも大変ありがとう!

RH

+1

この質問は非常に古いです。それが助けたらあなたは1つを受け入れるべきです! –

答えて

3

実行を制御する機能を追加機能

Function test 
    if (true) then 
     return true 
    else 
     return false 
    end if 
End function 

であなたのIF-式をラップしてみた後、使用

Result = ScriptControl.Run("Test") 

(上記のコードがテストされていませんが、その道に沿って何か

さらに詳しい情報はこちらをご覧ください。

http://support.microsoft.com/kb/184740

1

あなたがWindowsワークフロー財団の一部であり、式評価エンジンを使用して検討すべきです。評価者とその設計者は、WFとは別に使用できます。

1
if (true) then return 2 else return 3 
0

ヒントありがとうございました!もう少しBrummoの助けに基づいて、実験した後、これが動作しているようです:

txtExは、このテキストが含まれます。その後、

function test 
    if (1=1) then 
    test = true 
    else 
    test = false 
    end if 
end function 

sc.AddCode(txtEx.Textを)。私は本当に建物、ロードと機能を評価せず、式を評価したかったので、

object[] myParams = { }; 
Console.WriteLine(sc.Run("Test", ref myParams).ToString()); 

これは、理想的ではありません。 (私はIIFが評価すれば、単純な1行ではうまくいかないことに驚いています)。

+0

IIFに気をつけろ! –

1
using MSScriptControl; // references msscript.ocx 

ScriptControlClass sc = new ScriptControlClass(); 
sc.Language = "VBScript"; 
sc.AllowUI = true; 

// VBScript engine doesn’t have IIf function 
// Adding wraper IIF function to script control. 
// This IIF function will work just as VB6 IIf function. 
sc.AddCode(@"Function IIF(Expression,TruePart,FalsePart) 
       If Expression Then 
        IIF=TruePart 
       Else 
        IIF=FalsePart 
       End IF 
      End Function"); 
try 
{ 
    //define x,y variable with value 
    sc.AddCode(@"x=5 
       y=6"); 
    //test our IIF 
    Console.WriteLine(sc.Eval("IIF(x>y,x,y)").ToString()); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message); 
} 
関連する問題