2012-05-02 10 views
0

私はGUI計算機を作った。だから、誰かがボタンを押すと数字と記号がラベルに表示されます。そして、Enterキーを押すとコンピュータが文字列をキャプチャし、それがどこかの助けを必要とします。私は、Pythonには、C#で何か似たようなものが使用できるevalステートメントがあることを知っています。文字列として与えられた算術式を評価する方法

これが役立つ場合は、ここにコードがあります。 は、特にあなたがevalを持っていないのC#でbutton_click

public class form1 : Form 
{ 
    private Label lab; 
    private Button button2; 
    private Button button; 
    private Button plus; 
    private MathFunctions.MathParser calc; 

    public static void Main() 
    { 
     Application.Run(new form1()); 
    } 

    public form1() 
    { 
     // Initialize controls 
     ... 
    } 

    private void button_Click(object sender,System.EventArgs e) 
    { 
     string answer = lab.Text; 
    } 

    private void button2_Click(object sender,System.EventArgs e) 
    { 
     lab.Text = lab.Text + "2"; 
    } 

    private void button_plus(object sender,System.EventArgs e) 
    { 
     lab.Text = lab.Text + "+"; 
    } 
} 
+0

何が起こりたくないのですか?できるだけ具体的なものにする –

+1

可能な重複はありますか? http://stackoverflow.com/questions/355062/is-there-a-string-math-evaluator-in-net – Josh

+1

今後の質問のためにコードサンプルをいくつかの行に凝縮させてください。この中に無関係なコードが多すぎます。 –

答えて

1

方法を見てください。原則として、実行時にコードを生成し、コンパイルし、アセンブリを作成してからコードを実行することができます。または、ILを発行して動的メソッドを吐き出すこともできますが、それほど単純ではありません。

よく知られている方法の1つを使用して文字列を解析し、次にexpression treeを作成することをお勧めします。

または廃止予定のJavaScriptエンジンは、式の解析にのみ使用できます。あなたは、なぜそれを使用しないのpythonに慣れているので

Best and shortest way to evaluate mathematical expressions

0

を参照してください? C#コードでIronPytonスクリプトエンジンオブジェクトを作成します。スニペットは次のとおりです。

string expression = lab.Text; // @"540 + 4/3" try to test 

ScriptEngine engine = Python.CreateEngine(); 
ScriptSource source = engine.CreateScriptSourceFromString(expression, SourceCodeKind.Expression); 

int result = source.Execute<int>(); 
関連する問題