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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0122
yunebutton gosubを使用するとエラーが表示されなくなる3解決


yune

リンク

2021/1/22(Fri) 23:27:58|NO.92128

バグなのかどうかもわからないので質問させてください

例えば

exist stop
を実行すると最初のexistの部分でパラメータの省略はできませんといったエラーダイアログが表示されますが

button gosub "test",*a stop *a exist return
とするとボタンを押したときにエラーが表示されずにプログラムが強制終了します


button "test",*a stop *a exist stop
これだとボタンを押したときにエラーが表示されます


button goto "test",*a stop *a exist stop
これでもボタンを押したときにエラーが表示されます


gosub *a stop *a exist return
これでも表示されます

HSP3.51、3.6b4で同様の動作であるのを確認しました
エラーが表示されないだけで処理自体は正常に行われているようなのですが
不便なのでどなたか解決方法をお願いします



この記事に返信する


MillkeyStars

リンク

2021/1/23(Sat) 10:50:14|NO.92132

この場合の exist の利用は、意図しているので合ってますよ。
(業とエラーを発生させる目的なので)

ボタンを押した際にエラー音は鳴っていますか?
鳴っている場合、ダイアログの表示は正常に動作しています。



沢渡

リンク

2021/1/23(Sat) 10:56:36|NO.92133

私の環境ではbutton gosubの飛び先でエラーを発生させると
普通にエラー5になりましたが、環境の問題でしょうか?
(当方はWindows10の64bitです)
そういえばonexit gosubでも似たようなケースが発生したのを思い出しましたが、
gosubでの割り込みで発生する症状なのでしょうか。
対策としては、こんな感じ↓でbutton gosubの飛び先ではフラグだけを立て、
無限ループの中でフラグをチェックして、改めて本命のサブルーチンに
飛ばすようにすることでしょうか。

button gosub "test",*a0 flag=0 repeat if flag : gosub *a : flag=0 await 1000 loop end *a0 flag=1 //フラグだけを立ててreturn return *a //本命のサブルーチン exist //ワザとエラー return
ただ「不便だからどうにかしたい」という話ですから、
コードが煩雑になるようでは本末転倒かもしれませんが。



yune

リンク

2021/1/24(Sun) 04:45:54|NO.92143

エラーが表示されない時はエラー音も鳴りません
イベントビュアーで見るとhsp3のエラーとして記録されます
とりあえず自分の環境依存だということがわかったので助かりました
色々と試していたのですがエディタが正常に終了しない、oncmd gotoが正常に動作しないなど他にもおかしな所が見つかったので
なるべくbutton gosubを使わないようなソースにして必要なときには沢渡さんの方法を使わせてもらい
時間があるときに環境を見直そうと思います
ありがとうございました



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