X作成講座 on FB[11]  デバッグ


 FBではコードリソース作成時にデバッガが使えません。初心者にとってこれは辛いです。 XCMD が思うように動かなかった時、どこのルーチンが問題を起こしているのか、その時の変数の値がどうなっているかを調べられないと、デバッグしようにも手がかりが掴めません。

 ここではFBでXを作成する時に簡単に使えるデバッグテクニックを少し紹介します。


 ・BEEP を使う
 目的のルーチンを通っているか、そのルーチンが何回実行されたかが簡単に分かります。システムの警告音に、短くて耳障りの良いものを登録しておくのがコツです。多少無音部分があった方が回数を数えやすいでしょう。


 ・answer を使う
 FBは比較的文字列を扱い易いので、この方法も結構簡単に出来ます。例えば変数 abc& の値を表示させるには、

    FN NumToStr( xCmdPtr&, abc&, dValue$ )
    dMsg$ = "answer " + CHR$(34) + dValue$ + CHR$(34)
    FN SendHCMessage( xCmdPtr&, dMsg$ )
とします。変数の値を表示したダイアログが表示されて、値を確認することが出来ます。 NumToStr と SendHcMessage はグルールーチンなので xCmdPtr& が必要です。この方法を使う時はそのサブルーチンに xCmdPtr& を渡しておくのを忘れないで下さい。


 ・put を使う
 同様にして、HyperTalk の put も利用できます。
    FN NumToStr( xCmdPtr&, abc&, dValue$ )
    dMsg$ = "put " + CHR$(34) + dValue$ + CHR$(34) + " into cd fld 1"
    FN SendHCMessage( xCmdPtr&, dMsg$ )
これを実行すると、変数の値をフィールドに書き出すことが出来ます。変数が連続して変化する時に、その様子をモニターすることだって出来ますね。


 SendHCMessage はこのように HyperTalk を XCMD 内から実行させるのに役立ちます。他にもいろいろな方法が考えられますので、各自工夫してみて下さい。変数の値さえ調べられれば、かなりデバッグ作業がラクになると思います。


 ・時間を遅らせる
 XCMD によっては動作が速すぎて良く分からないこともあります。ディレイ(遅延)のためのプログラムはこのようなものが基本になります。
    myTics& = FN TICKCOUNT + 10
    WHILE FN TICKCOUNT < myTics&
    WEND
 この TICKCOUNT はシステムがスタートしてからの ticks(1/60秒単位)です。このプログラムでは 10/60秒だけ「空ループ」によって動作を遅らせます。遅らせる時間を引数で指定出来るようなサブルーチンとして用意しておいと便利かも知れません。


inserted by FC2 system
Next



FutureBASIC Lab.

UDI's HomePage