tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルループ途中のデバッグについて
記事No11888
投稿日: 2008/03/26(Wed) 05:47
投稿者るり
初歩的な質問なのですが、
for〜next 等で ループ中のプログラムで、カウントしている変数の値が、
一定の値を示したとき、プログラムをとめる方法は、あるのでしょうか?

for i=0 to 1000

a = a + 1  ←ここが、800になったときに止めたい等

next i

教えていただければ非常にうれしいのですが。
よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: ループ途中のデバッグについて
記事No11889
投稿日: 2008/03/26(Wed) 06:14
投稿者花ちゃん
> a = a + 1  ←ここが、800になったときに止めたい等

If a = 800 Then Stop

# 停止後は [継続]をクリックすれば、次に進みます。

又は、ウォッチウィンドウ で同様の事ができます。下記の
【ウォッチウィンドウ】の項を参照

 http://www.dokidoki.ne.jp/home2/masa7251/tips/access/syosai/syo00032.html

[ツリー表示へ]
タイトルRe^2: ループ途中のデバッグについて
記事No11927
投稿日: 2008/03/28(Fri) 05:11
投稿者るり
花ちゃんさん

If a = 800 Then Stop
ウォッチウィンドウ

共に非常に参考になりました。
ありがとございます。

[ツリー表示へ]
タイトルRe^2: ループ途中のデバッグについて
記事No11932
投稿日: 2008/03/28(Fri) 10:06
投稿者魔界の仮面弁士
別案として。

a = a + 1
Debug.Assert a <> 800

「a≠800」という条件を満たすなら、何もせずに通過しますが、
条件を満たさない(つまり、a=800)時には、一時停止します。

-------
私の個人的な使い分けとしては:

(1) ウォッチ式の「式が True のときに中断」を使う。
 → 今回のようなパターンでは、この手法を使うことが多いです。
  設定するには、コードウィンドウを右クリックして「ウォッチ式の追加」を選択し、
  [式]に「a = 800」と書き、[ウォッチの種類]を「式が True のときに中断」にします。


(2) Debug.Assert によるアサーション
 → 仮定条件を作成するときに使います。
  たとえば、自分で Function を作成したときに、そこに渡される引数の範囲が、
  特定の範囲内にあるという前提で設計されている場合に、Debug.Assert を
  しかけておくと、実行時に、意図しない値が引数に指定されて実行された事を
  チェックする事ができます。


(3) Stop ステートメントによる一時停止
 → 私は滅多に使いませんが、「開発環境では発生せず、実行環境でのみ
  発生する問題」を検証するために仕掛けることがあります。

といった感じです。
-------

(1) や (2) は開発環境でのみ停止しますが、(3) は EXE にした後も停止対象です。

(1) の設定は、プロジェクトを開きなおすと失われます。
そのため、これはデバッグ作業の一時的な設定に用いられます。

(2) の方法は、アサーション チェック(値の正常性検証)に使うものです。
(その特性上、本来は今回のような場面で使うべきものではありません)
引数チェックなど、「プログラムのこの箇所で、必ず真であるべき条件」を
記しておくもので、開発終了後もそのままコード中に残しておく事ができます。

(3) の方法は、唯一、EXE にした後にも停止する方法です。
そのため、今回のような場面で使うのであれば、本番用のアプリに
コンパイルする場合には、Stop コードを必ず除去しておく必要があります。

[ツリー表示へ]