Eval関数の宣言とは?

このQ&Aのポイント
  • Eval関数を使いたい!ドキュメントにある宣言とはなに?
  • DataBinder.Evalメソッドは、実行時にデータバインディング式を評価し、結果を要求側のブラウザに表示されるテキストとして書式化するものです。
  • 宣言はVisual BasicではPublic Shared Function Eval(container As Object, expression As String, format As String) As Stringとなっています。詳しい使い方はドキュメントを参照してください。
回答を見る
  • ベストアンサー

Eval関数を使いたい!ドキュメントにある宣言とはなに?

Eval関数を使いたい!ドキュメントにある宣言とはなに? DataBinder.Eval メソッド にある DataBinder.Eval (Object, String, String) 実行時にデータ バインディング式を評価し、 結果を要求側のブラウザに表示されるテキストとして書式化します。 を使いたいです。 Visual Studio 2005のドキュメントで見つけました。 ドキュメントにある宣言とはなんですか? Visual Basic (宣言) Public Shared Function Eval ( _ container As Object, _ expression As String, _ format As String _ ) As String Visual Basic (使用法) Dim container As Object Dim expression As String Dim format As String Dim returnValue As String returnValue = DataBinder.Eval(container, expression, format) 宣言と使用方法が載っていましたが、使い方がわかりません・・・ ~~~~~~~~~~~~~~~~~~~~~~ 以下を書くと「名前'Eval'は宣言されていません」とエラーが出ます。 宣言がわかっていないので、当たり前といえば、当たり前です。 Dim myWork As String = "1+2+3+4" Dim myTotal As String = "" myTotal = Eval("myWork") これが使えるようにするにはどうしたらいいか教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

ん~ Evalに代わるものって VB2005の標準機能ではないと思います 与えられた式を構文解析して自前で実装といったことになりそうです 逆ポーランド記法で 演算式を解析 解析結果から 演算子、値を取り出しながら計算 取り出す データや演算子が無くなったら 結果を返す なんて クラスか関数を作る方向かと または Freeのライブラリーがあるか Vectorなどで探してみるとか

rescue98
質問者

お礼

ありがとうございます。 電卓を作ろうとしましたが、電卓すら作れそうもありません・・・ 構文解析も作れそうもありません・・・ ライブラリの宣言と使用方法が書いていますが、使い方を教えてください。 使用方法のコードを使うには、宣言を、その使用方法のコードの前に書かないと、使えないのですか?

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Windows Formアプリなら簡単に使えませんよ Shared関数なので 単独での使用するのではなく DataBinder.Eval( contena, "1+2+3" ) などのように使います contenaが連結データを受けろとるプロパティになります ただし これは Webアプリ(ASPX)の中で使うものです Formアプリか使えそうなのは JSCript名前空間の evalメソッドかなぁ と思いますが こちらは非公開の機能のようですので 無理がありそうですね

rescue98
質問者

お礼

ありがとうございます。 eval関数に近い、Formアプリで使える関数はありますか? Formアプリで計算式を渡すと、計算結果を返してくれる関数を教えてください。

関連するQ&A

  • 【VB.NET】事後バインディングにおける引数の宣言方法

    【VB.NET】事後バインディングにおける引数の宣言方法  今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  開発環境:VB2008+XP になります。  Excel操作コードの部分を事後バインディングにすべく 勉強いたしております。  たとえば   「事前バインディング」     Dim myApp As New Excel.Application     Dim myBook As Excel.Workbook     Dim myBooks As Excel.Workbooks = myApp.Workbooks     Dim xlSheet As Excel.Worksheet     Dim xlSheets As Excel.Sheets       ↓   「事後バインディング」     Dim myApp As Object     Dim myBook As Object     Dim myBooks As Object     Dim xlSheet As Object     Dim xlSheets As Object     myApp = CreateObject("Excel.Application")     myBook = myApp.WorkBook     myBooks = myApp.WorkBooks     xlSheet = myApp.Worksheet     xlSheets = myApp.Sheets のようにするのだと思うのでございますが、  Sub Excel2(ByRef myRng As Excel.Range, ・・・・)                  ↑ここはどうやって宣言すべき                    なのでございましょうか???  「Sub Excel2」内ではmyAppが宣言されておりませんゆえ myApp.Rangeなどといたしますと「宣言されていません」とエラーが 出てしまうと思うのでございますが。。。。       もしお詳しい方がいらっしゃいましたら、是非ともアドバイスいただきたく お願い申し上げます。

  • ACCESSの宣言

    Private Sub コード_AfterUpdate() Dim Mdb As Database Dim Mtb As Recordset Dim sqlstr As String って、始めに宣言しますが、いざプログラムを走らせてみると、Dim Mdb As Database で "コンパイルエラー ユーザー定義型は定義されていません" になってしまいます。ここでひっかかるともうどうにもできないです。 なぜ、この宣言はいけないのでしょうか?

  • 配列の宣言の仕方

    vs2005を使用しています。 配列の宣言の方法はいくつかあるようですが 違いが分かりません。 Dim strDate() As String = New String(1) {} Dim strDate() As String = New String(1) {"",""} Dim strDate As String() = {"", ""} Dim strDate (1) As String Dim strDate As New ArrayList も候補のひとつですが、この違いは分かります。 やりたいことは、要素数2の配列を""で初期化したいというものです。 そしてその配列を返す関数を作成しています。 どれも同じように思うのですが、違いがあれば教えていただきたいと思います。 よろしくお願いします。 でもかまわないのですが、

  • ASPで型宣言

    ASPにおいて変数宣言するとき dim xxx as String などの型宣言はできないでしょうか?? よろしくお願いします!!!

  • VBA モジュールで共通に使う変数の宣言方法

    VBAにてプログラミングを覚えている者です。 現在、いくつかのモジュールがあり、それぞれDimにて宣言している共通の変数があります。 いくつものプロシージャに毎回宣言せず、どこかでひとまとめにしたいと思い、色々と調べています。 例えば、 Dim pic1 As Picture Dim cell1 As String Dim pass1 As String Dim pic2 As Picture などです。 Dimのほかに、Publicの宣言などがありますが、いま一つ使い方がピンときません。 共通宣言する変数をひとつのモジュールとして登録し、活用できると、いざ変更となったときに その内容だけ置き換えればいいと思うのですが、みなさんはどのように宣言をしていますか? (例えば、Stringなどは各モジュールで変更するのが大変だと思うのですが・・・) ヒントを教えていただければと思います。よろしくお願いします。

  • byte型を固定長で宣言したい

    シリアル通信プログラムを作っているんですが、シリアルから受信するときデータをバイト型で扱いたいのです。どうやらそのためにバイト型の変数を固定長で宣言する必要があるらしいのです。もし、これがstring型なら Dim moji*100 as stringや Dim moji as string string=space(100) などとすれば100の長さを設定できるようですが、 こういうことをbyte型の変数でする方法がわかりません。 どなたか教えてください。

  • VB 変数宣言にて

    OKwaveをご覧の皆様、はじめまして。 当方、新人プログラマーです。 早速ですが、質問がございますので、 ぜひお答えしていただければ幸いです。 Microsoft Visual Basic 6.0にて、 とあるプログラムの解析をしているのですが、 変数宣言部分でわからないことがございます。 Dim ex_str As String * 256 とは、どういう意味でしょうか? 技術者の皆様にとっては容易過ぎる質問かもしれませんが、 宜しくお願い致します。

  • VBAのJScriptのeval()の挙動について

    VBAのコードを調べていますが、 JScriptで記述されている部分があり、 この部分でよく分からない挙動があるので教えてください。 (JSONデータをパースしているコードです) 具体的には、(実際のコードを簡略化したもの) ---------------------------------------- Sub test() Dim x As String Dim sc As Variant Dim y As String x = "{""A"":""d"",""B"":""e"",""C"":""f""}" Set sc = json_perse(x) y = sc.CodeObject.getValue("B") Debug.Print y End Sub Public Function json_perse(ByVal x As String) As Variant Dim sc As Object Set sc = CreateObject("ScriptControl") With sc .Language = "JScript" .AddCode "function getValue(){ var $tmp=''; for(var $i = 0; $i < arguments.length; $i++){ $tmp += ""['"" + arguments[$i] + ""']""; } return eval('e' + $tmp); }" .AddCode "var e = eval(" & x & ");" End With Set json_perse = sc End Function ------------------------------------------ のコードを実行すると、 getValue()の引数で指定した文字列(ここではB) の後の:の後の文字(ここではe)が返されますが、 なぜ、このようになるのかがよく分かりません。 この処理をしている部分を抽出すると ------------------------------------- function getValue(){  var $tmp='';  for(var $i = 0; $i < arguments.length; $i++){  $tmp += ""['"" + arguments[$i] + ""']"";  }  return eval('e' + $tmp); } var e = eval(" & x & "); ------------------------------------- となっていて、 eval()は、文字列として指定されたコードをJavaScriptのコードとして評価する ということですが、 eval(" & x & ")とeval('e' + $tmp)の部分が何をしているのかがよく分かりません。 なぜ、このコードを実行すると、 $tmpの文字(この場合はB)の後の:の後にある値が取得できるのでしょうか。

  • 「変数の宣言」と「変数の定義」は同じ意味ですか?

    Dim myStr As String は、変数の宣言と定義、どちらになるのでしょうか? どちらともいいますか?

  • Objectで宣言するのとObject型で宣言する

    Objectで宣言するのとObject型で宣言するのではどちらがいいでしょうか? エクセルです。 VBAでコードを作るにおいて、どちらのほうがいいのでしょうか? どちらも同じ動きをします。 Sub Sample1() Dim buf As Range Set buf = Range("A1") MsgBox buf.Value End Sub Sub Sample2() Dim buf As Object Set buf = Range("A1") MsgBox buf.Value End Sub ご回答よろしくお願いします。

専門家に質問してみよう