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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0804
yuukiwidthでウィンドウの移動2解決


yuuki

リンク

2016/8/4(Thu) 11:41:02|NO.76520

widthでウィンドウを移動しているのですが、
途中で「サブルーチンやループのネストが深すぎます」というエラーが出ます。


speed=2;速度 screenx=ginfo(20) screeny=ginfo(21) screen 0,345,246 title "ウィンドウ移動" onkey *shuuryou;どれかのキーを押すと終了 wait 300 ;右下 *migisita windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx+speed*cnt,windowy+speed*cnt if ginfo(4)>=screenx-349:goto *hidarisita if ginfo(5)>=screeny-249:goto *migiue loop ;右上 *migiue windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx+speed*cnt,windowy-speed*cnt if ginfo(4)>=screenx-349:goto *hidariue if ginfo(5)<5: goto *migisita loop ;左上 *hidariue windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx-speed*cnt,windowy-speed*cnt if ginfo(4)<5 :goto *migiue if ginfo(5)<5 :goto *hidarisita loop ;左下 *hidarisita windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx-speed*cnt,windowy+speed*cnt if ginfo(4)<5 : goto *migisita if ginfo(5)>=screeny-249: goto *hidariue loop *shuuryou end



この記事に返信する


沢渡

リンク

2016/8/4(Thu) 12:04:56|NO.76523

repeat〜loopの中からgotoで外に飛び出しているからです。
前のループが完結しないまま次のループが始まっているので、何十何百というループが入れ子になっていると解釈されてしまうのです。
breakでループを脱出してからgotoで飛ぶようにするとよいでしょう。



yuuki

リンク

2016/8/4(Thu) 14:15:42|NO.76524

これでやったらできました。

speed=2;速度 screenx=ginfo(20) screeny=ginfo(21) screen 0,345,246 title "ウィンドウ移動" onkey *shuuryou;どれかのキーを押すと終了 wait 300 ;右下 *migisita windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx+speed*cnt,windowy+speed*cnt if ginfo(4)>=screenx-349:break if ginfo(5)>=screeny-249:break loop if ginfo(4)>=screenx-349:goto *hidarisita ;右上 *migiue windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx+speed*cnt,windowy-speed*cnt if ginfo(4)>=screenx-349:break if ginfo(5)<5: break loop if ginfo(5)<5: goto *migisita ;左上 *hidariue windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx-speed*cnt,windowy-speed*cnt if ginfo(4)<5 :break if ginfo(5)<5 :break loop if ginfo(4)<5 :goto *migiue ;左下 *hidarisita windowx=ginfo(4) windowy=ginfo(5) repeat await 1 width ,,windowx-speed*cnt,windowy+speed*cnt if ginfo(4)<5 : break if ginfo(5)>=screeny-249: break loop if ginfo(4)<5 : goto *migisita if ginfo(5)>=screeny-249: goto *hidariue *shuuryou end
ありがとうございました。



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