HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1231
あいそとーぷbuttonを使った時のネストの解消4解決


あいそとーぷ

リンク

2021/12/31(Fri) 20:18:26|NO.94840


button "button",*btn stop *main repeat await loop *btn goto *main
このようなプログラムを実行しボタンを連打すると
「ネストが深すぎます」という旨のエラーがでてしまうのですが
どのようにしたらエラーがでなくなるのでしょうか



この記事に返信する


ねんねこ5787

リンク

2021/12/31(Fri) 20:33:12|NO.94841


button "button",*btn stop *main repeat await loop *btn stop
これで発生しなくなるかな?



沢渡

リンク

2021/12/31(Fri) 21:13:33|NO.94842

マニュアルには
>割り込みによるジャンプ(on??? gosubを使わない割り込み)が発生した場合には、
>サブルーチンやrepeat〜loopのネストはすべて0(初期状態)に戻されます
という(正直、なんでこんなややこしい仕様にしたんだか意味不明な)仕様が
書いてあり、それを踏まえればエラーにはならない筈なのですが、おかしいですね。

とりあえず、buttonをbutton gosubにし、gotoではなくreturnで戻るようにすれば
エラーにはならないと思います。

button gosub "button",*btn repeat await 100 loop *btn return



とあるプログラマ

リンク

2021/12/31(Fri) 22:23:35|NO.94843

この場合の深すぎてしまうネストとはsublevではなくlooplevです。

button "button",*btn stop *main repeat await loop *btn title "" + looplev + "" goto *main
これでlooplevが上がっていく様子がわかると思います。


repeat〜loop でループしている間にgotoジャンプするとrepeatの入れ子状態が続いてしまうので、沢渡のようにgosub&returnを使うか、breakして「すべてのrepeatを抜けてから」gotoしましょう。


もしくは純粋に

button "button",*btn stop *main await goto *main *btn goto *main
このようにgotoだけ使う方法で解決することもできます。



あいそとーぷ

リンク

2022/1/1(Sat) 15:02:52|NO.94846

解決しました!
解答してくれた方々ありがとうございました!



ONION software Copyright 1997-2021(c) All rights reserved.