テキストBOXに数式を入力すると、文字列と認識しますが、これを変数化して
プログラムのソースにしたいのです。どのような方法があるでしょうか。
ぜひ、お教えください。よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

QNo.85326で同じ質問をされたのですね。


http://www.okweb.ne.jp/kotaeru.php3?q=85326

こちらで、補足されたほうがいいと思うのですが。
85326の質問を見ると変数を使用したいのですね。そうすると、ExecuteStatementを使用する必要があります。先ほどの回答のように、Script Controlで、VBScriptを指定して、下記のように使用します。

Private Sub Command1_Click()
Dim Result
ScriptControl1.ExecuteStatement (" x = 10 ")
ScriptControl1.ExecuteStatement (Text1.Text)
Result = ScriptControl1.Eval(" y ")
Text2.Text = Result
End Sub

テキストボックスText1に、y = x * 2 が入力された場合

x = 10
y = x * 2

が実行されたのと同じになり、
Eval("y")で、変数yの値が取り出されます。
    • good
    • 0
この回答へのお礼

いろいろとお世話になりました。無事にプログラムが動作しました。
本当にありがとうございました。

お礼日時:2001/06/06 21:43

2つほど思い付いたのですが、



1.Oracleを利用する
RDBのOracleが使用できるのであれば、Oracleに計算させる

Select テキストボックスに入力された計算式 From Dual

の形式のSELECT文をoracleに投げて計算結果を得ます。

2.ScriptControlを利用する。
VBScriptやJScriptには、計算式を評価して結果を返す関数がありますので、これを
利用しようと言うものです。
VBScriptやJScriptを利用するには、WSHが利用できないといけません。下記のプロ
グラムをVersion.vbsと言うテキストファイルで保存して、エクスプローラーでダブ
ルクリックしてください。

WScript.Echo "WSHのバージョンは" & WScript.version

メッセージボックスが出て、バージョンが表示できればOKです。ただし、動作しなかっ
た場合やバージョンが5.0未満の場合は、WSHをダウンロードしてインストールする必要
があります。(5.0未満ではEval関数がない)

WSHは下記から取得できます。

http://www.microsoft.com/msdownload/vbscript/scr …

次に、ScriptControlをダウンロードします。

http://www.microsoft.com/Japan/Developer/Scripti …

登録が必要ですが、無料です。

これで、やっとVBから使用できます。

VBのメニュー[プロジェクト]-[コンポーネントの追加]で、Microsoft Script Control
を追加します。
フォームにはりつけて使用する場合は、

Private Sub Command1_Click()
Text2.Text = ScriptControl1.Eval(Text1.Text)
End Sub

のようにすれば、OKです。言語をJScriptで実行したい場合は、ScriptControlの
プロパティをJScriptにしてください。
フォームにはりつけずに使用する場合は下記のようになります。

Private Sub Command1_Click()
Dim SC As Object
Set SC = CreateObject("ScriptControl")
SC.Language = "VBScript"
Text2.Text = SC.Eval(Text1.Text)
End Sub

WSHやScriptContorolの情報は下記を参照してください。

http://www.microsoft.com/Japan/Developer/Scripti …

なお、VBScriptやJScriptのかわりに最近話題の言語Rubyでも、実行することが出来
ます。

http://www.geocities.co.jp/SiliconValley-PaloAlt …

上記のURLからActiveScriptRubyを取得して、インストールし、上記のプログラムの
LanguageをRubyScriptとするとRubyにより実行されます。

また、Eval関数の例が下記のページに載っておりますので紹介しておきます。

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/99 …
    • good
    • 0
この回答へのお礼

たんへんありがとうございます。早速試してみます。

お礼日時:2001/06/05 13:28

テキストBOXに入力された式の結果を求めて


その値を変数として持ちたいのでしょうか?
ちょっと変な方法ですが参考になるでしょうか?

○テキストボックスを2つ用意しておいて(txt1、txt2)、
 ボタンがクリックされるとtxt1に入力された数式をtxt2
 のコントロールソースに入れます。
 するとtxt2にはtxt1の数式の結果が入ります。
 その後にtxt2を変数(atai)に格納する・・・。
 ataiにはtxt1の数式の結果がセットされるという
 感じです。

Private Sub ボタン_Click()
  Dim atai As Integer

  txt2.ControlSource = "=" & txt1

  atai = txt2
End Sub

これしか浮かびませんでした。
見当違いだったらすみません。

この回答への補足

お世話になります。
VB5.0を使っているのですが、「ControlSource」がないのです。
実行すると、この部分が色の反転でエラーになります。
どこがいけないのか教えてください。
よろしくお願い致します。

補足日時:2001/06/02 16:42
    • good
    • 0
この回答へのお礼

お忙しいのにありがとうございます。
明日実行してみます。

お礼日時:2001/06/01 22:37

 その入力される文字は、”12+12"の様な式なのでしょうか? それとも、"A+B+C"の様な変数を含んだ式なのでしょうか?



 まぁどの道、前者でも後者でも、入力された文字列を、解析して計算するしかなく、すごく厄介です。

 文字列を、数字部分と計算記号部分に分解して、それを演算子の優先順位で計算してあげるればOKです。

 確か、そういった市販のOCXがあったの思うので、自身が内とか急いでいるって事なら、そのOCXの購入を考えてみるのも良いと思います
    • good
    • 0
この回答へのお礼

ありがとうございました。早速OCXを探して見ます。

お礼日時:2001/06/01 16:26

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテキストエディタでエンドタグを自動で挿入するソフト

有料・無料のテキストエディタがありますが、
開始タグを打つと、エンドタグが自動的に挿入されるテキストエディタは、ありませんか?

また、HTMLプログラムを作成するのに、タイプミス発見やユーザー補助が豊富な
テキストエディタを教えてください。

Aベストアンサー

自動で挿入されるのではありませんが、「一発挿入」できるエディタ「GoHome」ではいかがでしょうか。おそらく終了タグの入れ忘れを防ぎたい目的と推測しますが、タグには終了タグ不要のものも多く、それを完全自動で行ってくれるものはなかなかないようです。
http://www.vector.co.jp/soft/win95/net/se157686.html

HTML編集に便利なエディタはいくつもありますが、フリーの「HeTeMuLu Writer (へてむるライタ~)」なんてのが多機能で使いやすそうです。
http://www.vector.co.jp/soft/win95/net/se110139.html

Qテキストから文字列を抜き出すには?(HTMLソース

HTMLが書かれたテキストファイルから
<a href="http://-----.com">hogehoge</a>のように書かれたタグから
http部及びhogehoge部を抜き出すのに良い方法はないでしょうか?

現在IndexOfを使って"<a"~等で取得していますがタグの書き方によっては
<a href="から始まっているとは限らないのでこの辺りも何とかしたいと考えてます。

何かご存知の方いましたらご教授お願いします

環境はVB 2005 Pro を使用しております

Aベストアンサー

お世話になります。
正規表現を使えばよいと思います。

Dim teststr1 As String = "<a href='http://hgoehoeg/'>abc</a>"
Dim teststr2 As String = "<a target='_blank' href='http://hgoehoeg/'>def</a>"
Dim teststr3 As String = "<a target='_blank' href='http://hgoehoeg/' >ghi< / a>"

Dim reg As System.Text.RegularExpressions.Regex _
= New System.Text.RegularExpressions.Regex("(?<=<a.*?>).*(?=<.*/)")
Dim m1 As System.Text.RegularExpressions.Match = reg.Match(teststr1)
If m1.Success Then Console.WriteLine(m1.Value)
Dim m2 As System.Text.RegularExpressions.Match = reg.Match(teststr2)
If m2.Success Then Console.WriteLine(m2.Value)
Dim m3 As System.Text.RegularExpressions.Match = reg.Match(teststr3)
If m3.Success Then Console.WriteLine(m3.Value)

お世話になります。
正規表現を使えばよいと思います。

Dim teststr1 As String = "<a href='http://hgoehoeg/'>abc</a>"
Dim teststr2 As String = "<a target='_blank' href='http://hgoehoeg/'>def</a>"
Dim teststr3 As String = "<a target='_blank' href='http://hgoehoeg/' >ghi< / a>"

Dim reg As System.Text.RegularExpressions.Regex _
= New System.Text.RegularExpressions.Regex("(?<=<a.*?>).*(?=<.*/)")
Dim m1 As System.Text.RegularExpressions.Match = re...続きを読む

Qgraphvizで使うテキストエディタについて

こんにちは。

graphvizの日本語入力をしたいのですが、メモ帳だとうまくいかないので、別のテキストエディタを使おうと考えているのですが、皆さんがこのテキストエディタならきちんと日本語入力できますよっていうテキストエディタは何でしょうか?。

できれば、確実にできるテキストエディタが知りたいので、ご経験のある方、教えていただけないでしょうか?。

非常に今、それがわからなくて困っていますので、どうぞよろしくお願いいたします。

以上です。

Aベストアンサー

WIndow 7とMacで確認してみました。
dottyの方はどちらも文字化けします。どうもdotty自体は日本語等に対応できていないようです。

Windows7のgveditでは、貼り付けた場合にはレイアウトで日本語を確認できました。
しかし、ファイルに保存したものを開いたり、ファイルに保存したいしたら文字化けしました。

> dot -Kneato -Tgif test.dot -o test.gif

これは、コマンドプロンプトから入力します。

準備; 環境変数PATHに、graphvizをインストールしたフォルダの下にあるbinディレクトリを追加する
あるいは、上記準備無しに、
"C:\Program Files\GraphvizXX\bin\dot" 等とフルパスで指定する。

dotは、.dotを各種画像フォーマットに変換するツールです。
この例では、test.gifにGIF形式で保存されます。

QコンボBOXとテキストBOXの連携の仕方

コンボBOXとテキストBOXの連携の仕方を教えてください。
データテーブルに
ID 色
1 赤
2 白
3 黄
4 青
というデータがあります。
メインフォームのID用コンボBOXにデータテーブルのIDリストを表示して選択できるように設定しました。
IDコンボBOXの横に、色用テキストBOXを作って、コンボに「1」と入れたらテキストBOXに「赤」と自動的に表示させたいのですがどのようにすればよいか教えてください。

Aベストアンサー

VB2005 Express Editionを前提とします。
該当するテーブルはhoge.mdbというAccessのデータベースとします
Windowsアプリケーションを新規作成し、
Form1に対し、Combobox1とTextBox1を貼り付けます。

さらにDataSource1を貼り付けます。
DataSource1コントロールのDataSourceプロパティをクリックし、小さなボタンを押します。
[プロジェクト データソースの追加]をクリック
[データベース]をクリック
[新しい接続]をクリック
[データソース]をSQL Server用からAccess用に変更
[データベース ファイル名]で[参照]からhoge.mdbを指定します

REM ↓コレがいいのかはよくわからん
[データベースにログオン]にユーザー名とパスワードを入力して[パスワードを保存]しておきます

接続の確認を行い、成功したら[OK]→[次へ]
[選択された接続は~]とか言われるので内容を読んだ上で[はい(Y)]→[次へ]
[データセット内に指定するデータベース オブジェクト(W)]で、使うテーブルを指定します。→[完了]

コンボボックスに小さな三角形があり、クリックすると
[Combobox タスク]が現れる。

[データソース]で使用するテーブルを指定します


REM 以下二行よく解ってない
[メンバの表示]と[値の表示]で[ID]を指定します
[選択された値]をなしのままにしておきます

REM TagとTextの違いを理解してません。ごめんなさい
TextBox1のプロパティで(DataBinding)の(詳細)、あるいはTagとTextで使用するテーブルの[色]を指定しておきます

実行します。これでとりあえず連動はしているはずです

VB2005 Express Editionを前提とします。
該当するテーブルはhoge.mdbというAccessのデータベースとします
Windowsアプリケーションを新規作成し、
Form1に対し、Combobox1とTextBox1を貼り付けます。

さらにDataSource1を貼り付けます。
DataSource1コントロールのDataSourceプロパティをクリックし、小さなボタンを押します。
[プロジェクト データソースの追加]をクリック
[データベース]をクリック
[新しい接続]をクリック
[データソース]をSQL Server用からAccess用に変更
[データベース ファイ...続きを読む

Qテキストエディタ設定 -サクラエディタ-

初めてプログラミングを始めます。
「作りながら学ぶRuby入門 著 久保秋 真」という本を参考にしてます。

この本で「演習場所を準備する」という項目で以下のように書いていました。

『テキストエディタで「C:\ruby_ex」ディレクトリに新しいファイルを「test01.rb」を作成して・・・』

上記のディレクトリに新しいファイルの作成の仕方を教えていただきたいです。
テキストエディタはサクラエディタです。

PC環境
OS:VISTA HOME PREMIUM SP2
Ruby:Ruby-1.9.1-p243
テキストエディタ:サクラエディタ Ver1.6.6.0(V 1310)

Aベストアンサー

どの辺でひっかかっていますか?

1. サクラエディタを開く
2. フロッピーアイコンをクリックして(名前を付けて保存)
3. ダイアログで目的のフォルダ"C:\ruby_ex"に移動
4. 名前test01.rbで保存

これだけです。

または、

1. エクスプローラで目的のフォルダ"C:\ruby_ex"を開く
2. 右クリック→テキストファイルを新規作成
3. 名前をtest01.rbに変更
4. test01.rbを右クリック→SAKURAで開く

これでもOK。

「SAKURAで開く」メニューが出ない場合は、そのままダブルクリックしてください。

「ファイルが開けません」

と言うエラーが出たら、下に表示されている「一覧からプログラムを選択する」を選び、サクラエディタを選択します。

ところで、質問自体は、特にRubyとは関係無いエディタの使い方の基本的な話ですので、他のカテゴリ(「その他(ソフトウェア)」とか)の方が回答がすぐに付くと思います。
(適切な回答が素早く欲しい場合、カテゴリ選びは、結構重要です)

Rubyそのものの質問であれば、もちろん、このカテで大丈夫ですよ。

どの辺でひっかかっていますか?

1. サクラエディタを開く
2. フロッピーアイコンをクリックして(名前を付けて保存)
3. ダイアログで目的のフォルダ"C:\ruby_ex"に移動
4. 名前test01.rbで保存

これだけです。

または、

1. エクスプローラで目的のフォルダ"C:\ruby_ex"を開く
2. 右クリック→テキストファイルを新規作成
3. 名前をtest01.rbに変更
4. test01.rbを右クリック→SAKURAで開く

これでもOK。

「SAKURAで開く」メニューが出ない場合は、そのままダブルクリックしてください。

「ファイルが開け...続きを読む

Q文字列型変数に1024を超えた文字列を代入した時に

VBでOracleDBに対してoo4oでクエリーを発行する際、
1024を超える文字列になってしまいました。
実際テストしようとした時、エラーになってしまうので調査したところ、
1024文字を越えた時点で自動的に改行?が入ってしまいクエリーが変なところで切れてしまいます。
何か対応する方法はありますか?
ちなみに文字列変数を2・3作成し、後で1つにまとめると言うこともやってみたんですが、結果が同じで。。。

Aベストアンサー

あらかじめ改行を入れてみてはいかかがですか?
自分はSQL文を作る際、項目ごとに改行を入れています。

Sql = ""
Sql = Sql & "Select" & vbCrLf
Sql = Sql & vbTab & "項目1," & vbCrLf
Sql = Sql & vbTab & "項目2" & vbCrLf
Sql = Sql & "From" & vbCrLf
Sql = Sql & vbTab & "テーブル" & vbCrlf

という感じ。
デバッグ時に内を取り込んだ際も見やすくなるので、この書き方でやっています。

書くのは面倒だとは思いますけどね(汗)。

Qテキストエディタの文字サイズ変更

テキストエディタの文字サイズ変更
テキストエディタでワープロソフトみたいに特定の文字だけ
文字サイズを変更したり色を変えたりしたいのですが
(例えば見出しだけ文字サイズを変えるなど)
それが出来るエディタはありますか。(ワードパット以外で)
フリー、シェアウェアどちらでもいいです。

Aベストアンサー

テキストエディタは純粋に文字を入力するだけのがほとんどです。

文字装飾できるのはWindowsのワードパットやMacのTextEditのようなリッチテキストエディタ、(簡易)ワープロです。


iText
http://homepage.mac.com/lightway/iText.html
一応テキストエディタとなっているけど、どうみても簡易ワープロの色の方が強い。

参考URL:http://homepage.mac.com/lightway/iText.html

Qソフトウェアキーボード使ってテキストボックスの文字列末尾に文字列追加

VB.NET WindowsMobile5.0にて開発してます。

A~Z、0~9までのソフトウェアキーボードをボタンコントロールで配置して作成してます。(WindowsMobileのPADではない)

テキストボックスに各ボタンクリックイベント(A~Z、0~9)毎に文字列を連結させながら表示させたいのですが
文字列の末尾に文字を追加したい場合どうすれば良いでしょうか?
各画面にソフトウェアキーボードがあるので
ファンクションを使ってクリックがある度に末尾に文字を追加していきたいので下記の様に書きクリックイベントで呼ぼうとしましたが駄目でした。
Public Function TextInsert(ByVal TI As Char)
Dim str1 As String
Dim str2 As String
str2 = str1 '前回文字列保存
str1 = TI  '今回文字列格納
str1 = str1 & str2 '文字列連結
Return str1    '結果を戻す
End Function
なにかもっと簡単で良い方法ありませんか?
ものすごく初歩的なことで申し訳ありませんがご教授お願いします。

VB.NET WindowsMobile5.0にて開発してます。

A~Z、0~9までのソフトウェアキーボードをボタンコントロールで配置して作成してます。(WindowsMobileのPADではない)

テキストボックスに各ボタンクリックイベント(A~Z、0~9)毎に文字列を連結させながら表示させたいのですが
文字列の末尾に文字を追加したい場合どうすれば良いでしょうか?
各画面にソフトウェアキーボードがあるので
ファンクションを使ってクリックがある度に末尾に文字を追加していきたいので下記の様に書きクリックイベ...続きを読む

Aベストアンサー

末尾への追加なら

ボタンのクリックイベントで
TextBox1.SelectionStart = TextBox1.TextLength
TextBox1.Text &= CType( sender, Button).Text
といった具合でいいのでは …

複数のボタンの同一ハンドラの指定には handles句に複数のイベントを並べれば可能です

Private sub btn_Click(sender as Object, e as EventArgs) _
Handles Button3.Click, Button2.Click, Button1.Click
といった具合です

お示しのコードでは 前回のデータを記憶したいのであれば str1の宣言を
static str1 as String = ""
などとするかstr1自体を関数外部で宣言してグローバルスコープを持たせるなどが必要でしょう

Qテキストエディタで読み取り専用に保存したい

お世話になります。
テキストエディタで読み取り専用に保存するにはどうすれば良いのでしょうか?
使用しているテキストエディタは「Tera Pad」です。
不可能なら他に保存できるエディタを教えてください。
保存形式はxmlです。
宜しくお願いします。

Aベストアンサー

読み取り専用は呼んで字のごとく読み取り専用です。
保存はできません。
どんなテキストエディタを使っても一緒です。
なんせ読み取り専用ですから。

ファイル名を変えて保存すれば保存出来るはずです。
どうしても上書き保存したいのであれば、ファイルを右クリックして、プロパティを出して、その中にある読み取り専用のチェックを外してください。

Q変数への数式の代入でオーバーフローします

Dim lngDaySec as Long
lngDaySec = 60 * 60 * 24

以上のコードでオーバーフローします。
しかし、2行目を以下のように書き換えると

lngDaySec = Clng(60 * 60) * 24

正常に値が代入されます。
Long型の値の範囲は「-2,147,483,648 ~ 2,147,483,647」
となっており、「60×60×24」は「86,400」だから
範囲を逸脱しているとは思えません。
どうしてオーバーフローするのでしょうか?
そして、Clng関数で回避できるのはなぜなんでしょう?
ひょっとしたらアホな質問をしているのかもしれませんが、
どなたかご回答いただければありがたいです。

Aベストアンサー

lngDaySec = 60 * 60 * 24
式中の定数(60,60,24)が内部的に整数型(Integer)として扱われているせいです。

特に指定しない限り、VBのコンパイラは式の内容を見て定数の型を適当に設定します。
今回の場合、式中に含まれる全ての数値が32767以下であるため、これは整数型の演算であると判断されてしまったのでしょう。

こういった事態を回避するためには、定数の後ろに#を付けることにより、明示的に長整数型だと宣言してやればいいです。

こんな感じです。
lngDaySec = 60# * 60# * 24#


人気Q&Aランキング

おすすめ情報