命令を順番に起こるようにするには?

解決


VB6初心者  2004-08-23 03:56:57  No: 115817

If 条件① Then
命令① '現象①が起きる
Else If 条件② Then
命令②  '現象②が起きる
End If

例えば上のような時、現象①が起きた後じゃないと現象②を起こせないようにするにはどうすればよいのでしょうか?つまり、「条件①が起きないのに条件②が入力されても何も起きない。また、現象②が起きた後に現象①が起きることもない。」という風にしたいのですが。

Dim i as Integer
If 条件①  Then 
命令①
i=1
End if
If i=1 And 条件② Then
命令②
End if

とか色々やってみたのですができません。m(_ _)m


みん  2004-08-23 05:23:34  No: 115818

やりたいことの意味をはっきりさせるために文章を下記のようにしてみましたが
これであっていますか?

・条件①が成立すると命令①を実行する。
・命令①が未実行のときは条件②が成立しても命令②を実行しない。
・命令②を実行した後は命令①を実行しない

>とか色々やってみたのですができません
具体的にはどのような結果になったのですか?

ぱっと見る限り
>Dim i as Integer
>If 条件①  Then 
>命令①
>i=1
>End if
>If i=1 And 条件② Then
>命令②
>End if
のソースではiがローカル変数なのでタイマーコントロールのような中に上記ソースが
あるならiは0に初期化されてしまうので命令①を実行したことを忘れてしまいますね。
また、命令②を実行したというフラグがないので条件①が成立すれば命令①は毎回
実行されます。


マグ  2004-08-23 05:57:17  No: 115819

Dim i as Integer
If 条件①  Then 
  命令①
  If 条件② Then
    命令②
  End if
End if

これを試してみましたか?
ついでに未確認です。


VB6初心者  2004-08-23 06:02:50  No: 115820

はい。そういうことであっています。
多分、iが初期化されてしまったんだろうなとは思ったのですが、じゃあどうすればいいのかがわからなかったのです。


マグ  2004-08-23 06:16:59  No: 115821

ソースが分かりずらいのですが、
もし、よろしければ、
もっと詳しく、ソースを載せてください。

あと、環境ってVB6ですか?


みん  2004-08-23 06:40:11  No: 115822

命令を実行したことを記憶する変数をグローバル変数、モジュール変数
またはスタティック変数になるように宣言してください。


VB6初心者  2004-08-23 07:51:01  No: 115823

環境はVB6です。
static i as integer
とかにすればいいんですか?(すいません。よくわからないです)
if文の中の命令がその次のif文に反映するようにするにはどうすればいいのでしょうか?

Dim str as String
Static i as Integer
i=1
If i=1 And str="文字①"  Then 
  strをしゃべらせる命令
  i=2
  If i=2 And str="文字②" Then 'i=2が反映されないため命令②が起きません。また文字①を入力したら文字①をしゃべってしまいます。
  strをしゃべらせる命令
  End if
End if

文字①を入力すれば当然、文字①はしゃべるのですが、その後文字②を入力してもしゃべってくれません。
結構長くなるのであまり詳しく載せられないですが、こんな感じです。分かりにくくてすいません。m(_ _)m
方法を変えたほうがいいでしょうか?


みん  2004-08-23 07:57:02  No: 115824

落ち着いて考えてください。
よく自分の書いたコードをみてどうなるか考えてみてください。

命令①を実行する条件は
条件①が成立し、かつ命令②の実行フラグが未実行の場合。

命令②を実行する条件は
条件②が成立し、かつ命令①の実行フラグが実行済みの場合。

そんなに難しくないはずですよ。


VB6初心者  2004-08-23 08:57:10  No: 115825

すーぱーありがとうございました。
form_loadでi=1を宣言して、実行するプロシージャ内ではそのままやればできました。問題ないです。初心者なので簡単なことでも新しい発見ですm(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加