「Math.」を付けるのが面倒なので、付けなくてもいいように改良しました。(^_^;
Button1_Click()をちょっと書き直して、Accept(),IsAlNum2(),SplitTok()関数を新設しました。
Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles Button1.Click Dim strExpr As String = Accept(TextBox1.Text) TextBox2.Clear() TextBox2.Text = JsEval(strExpr) End Sub Function Accept(ByVal expr As String) As String Dim result As String = Replace(expr, "Math.", "") Dim lst() As String = { "E", "LN", "LOG", "PI", "SQRT", "abs", "acos", "asin", "atan", "ceil", "cos", "exp", "floor", "log", "max", "min", "pow", "random", "round", "sin", "sqrt", "tan" } result = SplitTok(result) For Each target As String In lst result = Replace(result, vbLf + target, "Math." + target) Next result = Replace(result, vbLf, "") Return result End Function Function IsAlNum2(ByVal strCh As String) As Boolean Dim result As Boolean = False Dim chrCh As Char = UCase(strCh.Chars(0)) Select Case chrCh Case "A" To "Z", "0" To "9", "_" result = True Case Else result = False End Select Return result End Function Function SplitTok(ByVal strS As String) As String Dim result As String = vbLf, ch As String = Strings.Left(strS, 1) Dim i As Integer, flag As Boolean = IsAlNum2(ch) result += ch For i = 2 To strS.Length ch = Mid(strS, i, 1) If IsAlNum2(ch) <> flag Then result += vbLf : flag = Not flag End If result += ch Next Return result End Function
こっちの方が楽でいいかな。Button1_Click()をだけちょっと書き直して、Accept(),IsAlNum2(),SplitTok()関数は不要。(^_^;
Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles Button1.Click Dim sExpr As String = "with(Math){" + TextBox1.Text + "}" '「Math.」を省略可能にするため TextBox2.Clear() TextBox2.Text = JsEval(sExpr) End Sub
また、WebBrowserを使わずに、eval()関数を呼び出す方法は、こちらです。(^_^;
Public Function jsEval(ByVal sSrc As String) As String Dim result As String = "" Dim objSC As Object = CreateObject("ScriptControl") objSC.language = "Jscript" Try result = objSC.CodeObject.eval(sSrc) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation) result = "Error!" End Try objSC = Nothing Return result End Function
※参考URL
●簡易関数電卓JsCalc Visual Basic 2010
●簡易関数電卓JsCalc Visual Basic 2010 (2)
基礎Visual Basic 2010 (IMPRESS KISO SERIES)
- 作者: 羽山博
- 出版社/メーカー: インプレス
- 発売日: 2010/08/13
- メディア: 単行本(ソフトカバー)
- クリック: 12回
- この商品を含むブログ (4件) を見る
- 作者: 池谷京子,増田智明,国本温子
- 出版社/メーカー: 秀和システム
- 発売日: 2010/11/08
- メディア: 単行本
- クリック: 9回
- この商品を含むブログ (4件) を見る
ゼロから学ぶ! 実用Visual Basic2010 (日経BPパソコンベストムック)
- 作者: 原田英生
- 出版社/メーカー: 日経BP社
- 発売日: 2011/09/14
- メディア: 雑誌
- 購入: 1人 クリック: 11回
- この商品を含むブログ (2件) を見る
ひと目MS VISUAL BASIC 2010 アプリケーション開発入門 (MSDNプログラミングシリーズ)
- 作者: 上岡勇人
- 出版社/メーカー: 日経BP社
- 発売日: 2010/10/14
- メディア: 単行本
- 購入: 1人 クリック: 13回
- この商品を含むブログ (2件) を見る
ステップアップ VISUAL BASIC 2010 (MSDNプログラミングシリーズ)
- 作者: エディフィストラーニング株式会社矢嶋聡
- 出版社/メーカー: 日経BP社
- 発売日: 2010/07/22
- メディア: 単行本
- 購入: 2人 クリック: 68回
- この商品を含むブログ (2件) を見る
- 作者: 笠原一浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2010/09/27
- メディア: 大型本
- クリック: 8回
- この商品を含むブログ (1件) を見る
明快入門 Visual Basic 2010 (林晴比古実用マスターシリーズ)
- 作者: 林晴比古
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2010/10/30
- メディア: 単行本
- 購入: 2人 クリック: 4回
- この商品を含むブログ (2件) を見る
- 作者: きたみあきこ
- 出版社/メーカー: 秀和システム
- 発売日: 2011/03/25
- メディア: 単行本
- クリック: 19回
- この商品を含むブログ (1件) を見る
作って覚える Visual Basic 2010 Express入門
- 作者: 荻原裕之,宮崎昭世
- 出版社/メーカー: 秀和システム
- 発売日: 2011/06/27
- メディア: 単行本
- クリック: 1回
- この商品を含むブログ (1件) を見る
- 作者: エディフィストラーニング株式会社矢嶋聡
- 出版社/メーカー: 翔泳社
- 発売日: 2011/09/17
- メディア: 大型本
- 購入: 1人 クリック: 6回
- この商品を含むブログ (3件) を見る