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

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

A 回答 (1件)

数式(四則演算程度)だけなら、文字列を解釈して・・・


でもなんとかなるかもしれません。コロナ社刊のコンパイラ作成方法などが参考になります。

が、しかし、
VBを使っている。ここで質問している。などの状況から察するに、「チョイチョイっと簡単にできないのかなぁ」と思ってるんでしょ?
はずしてたらごめん。

そんな場合は、「VBーScript」をつかうといいですよ。VB5なら付いてるんじゃなかったかな?
(ProEditionにはついてますけど・・)
「Microsoft Script Control」をコンポーネントに追加して、フォームに貼りつけるとOKです。

簡単なサンプルもついてましたよ。(MSDNに)
    • good
    • 0

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

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

QテキストBOXに入力した数式をプログラムソースとして使用する方法

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

Aベストアンサー

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の値が取り出されます。

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...続きを読む

QVB5.0とVB6.0

ご教授お願いします。
VB4.0で開発を始め、VB5.0に。主にDBはDAOを使っています。いくつかのアプリを配布し(セットアップウィザードを使い)、その後VB6.0がリリースされましたが、配布済みアプリに影響があると思いB6.0へのUpをあきらめていました。VB5.0は98でしか認められていず、2000でも試しましたが、確かに一部の動作でエラーが起こったりしました。使用しているマシンが不安定になったので、中古PCに98をインストールし、開発環境を移しましたが、セットアップウィザードが「予期せぬエラー」とかで動きませんでした。以上が経過です。
ようやくVB6.0を入手し、とりあえず2000で、2,3のアプリで試したところ、そのまま(何の手も加えず)OKでした。ちょっと気がついた点といえば、作成されたEXEのサイズが1割ほど小さくなっていました。
質問ですが、VB5.0→VB6.0では何が変わったのでしょうか?(当時はある程度読んだ気がしますが、覚えていません)
そして、アップ後、注意しなければならないことは何でしょうか?
よろしくお願いいたします。

ご教授お願いします。
VB4.0で開発を始め、VB5.0に。主にDBはDAOを使っています。いくつかのアプリを配布し(セットアップウィザードを使い)、その後VB6.0がリリースされましたが、配布済みアプリに影響があると思いB6.0へのUpをあきらめていました。VB5.0は98でしか認められていず、2000でも試しましたが、確かに一部の動作でエラーが起こったりしました。使用しているマシンが不安定になったので、中古PCに98をインストールし、開発環境を移しましたが、セットアップウィザードが「予期せぬエ...続きを読む

Aベストアンサー

主には コントロールが更新されているといった点でしょう
コモンコントロールに VB5独自のコントロールと同等の機能が搭載されたとか …
あとは コンパイラ自体の最適化や バグフィックスです
VB6を使うのであれば SP6などのパッチを当てましょう
http://www.microsoft.com/downloads/details.aspx?familyid=A8494EDB-2E89-4676-A16A-5C5477CB9713&displaylang=ja

ADOやDAOなどは そのまま使えるものがほとんどだとおもいます

[VB] 32 ビット版から Visual Basic 6.0 への移植時の注意事項
http://support.microsoft.com/kb/412580/ja
なども参考になるかも ・・・

Q【VB6】 変数1 = 変数1 Or $H2

他の人が作ったプログラムの修正を行っていたところ、下記のような記述がありました。
このような Or や And の使われ方はどのようなことを意味するのでしょうか?
(gStatusはintegerです。)

記述(1)
gStatus = gs_Status Or &H2

記述(2)
If (gStatus And &H2) = &H2 Then
'処理
End IF


宜しくお願い致します。

Aベストアンサー

&H2は、16進数の「2」をあらわします。
ご質問のケースでは、BIT1の状態を制御、確認しています。
記述(1)
gs_Status のBIT1をONしている。
記述(2)
gs_Status のBIT1がONか、どうか判断している。
(gs_Status をBIT1でマスク(BIT1の情報のみを抽出))し、
BIT1と比較している。
16進数・2進数・論理演算を学習されては?
http://f1.aaa.livedoor.jp/~zahyou/oldvb/ronri.htm
http://www5b.biglobe.ne.jp/~yone-ken/VB/BinHexDec.html
http://www5b.biglobe.ne.jp/~yone-ken/VB/BinHexDec2.html

QVB6で、変数の値を別ファイルの変数に引き継ぎたい

AというVBのソースファイル(.frm)内に関数の呼び元があり、
その関数がBというファイルにあります。

その関数内で値が設定される変数を、Bファイルのグローバル変数とし、
また、Aファイルのグローバル変数として同じ名前の変数を宣言したとしても、

やはりB内で関数の実行が終了し、Aに戻った際には、変数は別のものとみなされている
ようで、B内関数で設定された値がAファイル内での同名変数に引き継がれません。

どのようにすればよろしいでしょうか?

ご存知の方、お願いします。

Aベストアンサー

>Bファイルのグローバル変数とし、

Bのファイルの拡張子は、.bas 標準ファイルにする
public 宣言で変数を定義

>また、Aファイルのグローバル変数として同じ名前の変数を宣言したとしても

そんなものイラン

そのまま編集を参照すべし


でもさぁ?
そんな、ちんけなコーディングやめて
オブジェクトを定義して、プロパティにて定義すべし
そのくらいやらないと、お給料もらう価値ないぞぉさん!

それが正解とは言わないけど・・・
20年前なら、それで通用したと思うよ

Qカスタムコントロール作ってます(VB.NET)。VB.Net にVB.6のActiveX作成時にあったプロパティページ作成ができないようですが

タイトルどうりです。VBNETのカスタムコントロールでデザインモードにおけるフォームつまりプロパティページやビジュアルにプロパティボックスから設定できるようにしたいのですが、どうしたらできるでしょうか?VB6ではできたのですが、(Activexコントロール)。

よろしくお願いします。

Aベストアンサー

通常のプロパティと同じように、プロパティ ウィンドウに項目を表示して設定できるようにする必要があります。
具体的には、
1. カスタム コントロールのクラスに外部公開する Property プロシージャを作成して、内部で値を保存できるようにする。
2. そのプロパティの宣言部分で、プロパティ ウィンドウに表示するように指示する属性値を設定する。

こんな感じです。

参考URL:http://www.atmarkit.co.jp/fdotnet/winexp/winexp02/winexp02_01.html


人気Q&Aランキング

おすすめ情報