- ベストアンサー
VBで自身の研究用にグラフ描写ソフトを作成中ですが、行き詰ってます
VB2008で研究用ソフトの作成をしています。 数式を入力しそのグラフを書く、と言ったものを作ろうとしているのですがうまくいきません。 たとえば、TextBox1に何か数値を入力したとして、 Dim str As String = textbox1.text Dim num As Decimal = Decimal.Parse(str) とすれば確かにnumはInt型で計算ができるのですが、同様にy=3*xのグラフを入力してそのxに-1から1までの数値を代入させて点を取りたいとき、この方法ではどうにもできずに困っています。 たとえば上の例では、3*xを入力した後xに好きな値を代入できるようにするようにはどうしたらできるのでしょうか? 説明がわかりにくくてすみません。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんな方法はどうでしょうか? TextBox1.Textが3+xとかの場合です。 Sub sample() Dim sc As Object = CreateObject("MSScriptControl.ScriptControl") sc.Language = "VBScript" For x As Integer = -1 To 1 MsgBox(x & ":" & sc.Eval(TextBox1.Text.Replace("x", x))) Next End Sub
その他の回答 (1)
- AKARI0418
- ベストアンサー率67% (112/166)
式y=3*xを文字列として受け取るということですか? str="y=3*x"として考えてみます。 まずxにすきな値を置き換えるには。 str.Replace("x",n) 'nは入力値 n=10であれば str="y=3*10" となります。 しかしこれでは自動で計算できませんよね。 そこで dim y as integer = Integer.Parse(System.Math.BigMul(str.Substring(InStr(str, "="), InStr(str, "*") - InStr(str, "=") - 1), str.Substring(InStr(str, "*"), Len(str) - InStr(str, "*")))) と計算することでyを30と求めることができます。 str.Substring(InStr(str, "="), InStr(str, "*") - InStr(str, "=") - 1) で"="から"*"までの文字を抜き出し(ここでは3) str.Substring(InStr(str, "*"), Len(str) - InStr(str, "*")) で"*"からうしろの文字列を抜き出します(10) Integer.parseはinteger型への変換です。 System.Math.BigMulは掛け算です。
お礼
ありがとうございます^^ 初心者でして複雑なことはわからないのですがいろいろとがんばってみます。
お礼
ありがとうございます^^ がんばっていろいろと考えて見ます。