| |||
|
ループ内でgoto命令を使う
| |||
repeat命令やforeach命令(HSP3)によるループ中、正常に抜けなかった場合、 ネスト回数(looplev)が増えて行き、同じループを通過していると、そのうちエラーになります。 ループ内でgosub命令による一時的なジャンプであればまだしも、 goto命令による一方通行なジャンプは、スクリプト的に汚くなりますから、 元のループ内位置への処理制御が出来たとしても利用すべきではありません。 repeat、loop等を使用するのではなく、コチラで紹介したローカルラベルを使用すると、 回数制御は別途記述する必要がありますが、イベント発生までループし続けるタイプは問題ありませんね。 また、下記のサンプルの様な擬似マクロ命令を用意するのも手です。 repeat、loopと同じ動きを行いますが、ループ中にgoto命令を使用しても問題ありません。 HSP2.6以降なら既存命令の取り消しが可能なので、取り消しした後に、 サンプルのrepeat、loopマクロを生成し、cntを通常変数にすればそっくり入れ替えられますね。 尚、continueマクロは用意していません。サンプルを元に作成してみてはいかがでしょう? breakマクロであれば次の様な感じにして、loopマクロの後に追加すればOKです。 #undef break #define break %tbrk goto *%p | |||
![]() | |||
|