1つだけ過去を変えられるとしたら?

VB.Netのイベントで、フォームのテキストコントロールに代入された計算式を計算したいのです。
(String変数に代入された値でも構いません)

計算式.textに "3*4+5"等の計算式が代入されているとします。
これを計算して結果を変数に代入させたいのですが、Textになっているので、どうすればよいか分かりません。
よい方法を教えて下さい。

A 回答 (2件)

フォームにボタンを1つ設け(Button7)


クリックイベントに
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
'メニューの「プロジェクト」ー「参照設定の追加」
'参照設定に「Microsoft.JScript.dll」と「Microsoft.Vsa.dll」を追加
Dim exp As String = "2*(3+4)+3"

Dim ve As Microsoft.JScript.Vsa.VsaEngine = _
Microsoft.JScript.Vsa.VsaEngine.CreateEngine()
Dim result As Double = _
CDbl(Microsoft.JScript.Eval.JScriptEvaluate(exp, ve))
'結果を表示
MsgBox(result)
End Sub
ーーーー
Debugして実行でボタンをクリックすると、17が返りました。
この元になるコードはWEB上に、相当数出てくるのですが、肝心なのは
'メニューの「プロジェクト」ー「参照設定の追加」
'参照設定に「Microsoft.JScript.dll」と「Microsoft.Vsa.dll」を追加
の部分が載ってない例が多く、手探りで調べてやりました。
(判っているWEB掲載者には常識と思うのかも)
ーー
テキストボックスの値を上記Expにセットして、コマンドボタンクリック実行で、多数の例でうまく行くか、数でなく変数文字列でどうか、など、やってませんので参考程度で考えていただき、よろしく。
VBScriptのもEVALがあるので、参照設定を旨くやれば、使えるのではないかと夢想していますが、判りません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
私もimogasiさんの方法でやってみたところ、17が返ってきました!
いろいろ調べて頂いて本当にありがとうございました。
いろんなパターンで試してみたいと思います。m(_ _)m

お礼日時:2009/11/11 14:12

文字列として作られた計算式を計算するライブラリや関数を自作するか、ネット上に公開されているライブラリや関数を拾って来るなど「計算してくれる何か」を自分で用意しなければなりません。



標準で用意されているのは「文字列を数とみなして数値にする物」だけです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
いろいろ探していますが、やはり自作しかないですかね。。。(涙)

お礼日時:2009/11/11 14:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!