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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0324
hirokiサブルーチン外のreturn6解決


hiroki

リンク

2006/3/24(Fri) 12:36:43|NO.94

 いままで、何も考えなくプログラミングしていたのですが、
下記のようなプログラムを組んだところ(実際はもっと複雑)
「サブルーチン外のreturnは無効です」と出ました。

s=""
gosub *a
mes s
stop

*a
gsel 0,-1
screen 2,100,100
pos 20,20
button "OK",*b
s=s+"A"
stop

*b
gsel 2,-1
gsel 0,1
return

この作り方がいけないのなら、ネストの深いところからとかif内からの
このようなサブルーチンは作れないということですよね。
いままで、このようなものを作っても動作していたハズなんですけどね。(-_-;)
記憶違いなんでしょうか。



この記事に返信する


シリル

リンク

2006/3/24(Fri) 12:41:50|NO.95

s=""
gosub *a
mes s
stop

*a
gsel 0,-1
screen 2,100,100
pos 20,20
button gosub "OK",*b
s=s+"A"
repeat -1
wait 1
if c=1 : return
loop
stop
*b
gsel 2,-1
gsel 0,1
c=1
return

私は今のところ↑のようなソースで対応しています。
試してみるといいのではないでしょうか?



Seclias

リンク

2006/3/24(Fri) 13:10:29|NO.96

button 命令は、パラメータとして gosub を指定しない限り、
goto 命令とほぼ同様のジャンプになりますので、
サブルーチンから復帰する return 命令は使用できません。

質問の主旨と違ってたら、ごめんなさい(´・ω・`)


s="" gosub *a mes s stop *a gsel 0,-1 screen 2,100,100 pos 20,20 ; [gosub]を指定し、サブルーチンジャンプ ; button "OK",*b button gosub "OK",*b s=s+"A" ; サブルーチンから復帰 ; stop return *b gsel 2,-1 gsel 0,1 ; サブルーチンから復帰 return



QIG

リンク

2006/3/24(Fri) 13:18:43|NO.97

> いままで、このようなものを作っても動作していたハズなんですけどね。(-_-;)

HSP 2.61では動いています。
でも文法的には・・・灰色ですかね・・・。



hiroki

リンク

2006/3/24(Fri) 13:30:40|NO.98

書き込んでくれたシリルさん&Secliasさんありがとうございました。
やはり勘違いしていたようですね。
実行中、ある条件で画面を切り替えてボタンを押すと元の画面に
戻るようなものを作ったんですが、行き詰まりました。
今はgotoばっかりにしてしまいました。(-_-;)
でも、シリルさんのようにループを設けるのも一つの手かなと
思いました。



hiroki

リンク

2006/3/24(Fri) 13:33:44|NO.99

QIGさん、そうなんですよね。
僕は、2.55から使ってますが、Hsp3では厳しくなりましたね。(-_-;)



なたで

リンク

2006/3/24(Fri) 23:25:27|NO.111

もう解決済みの用ですが一応。
button 命令はサブルーチンのネストを初期化します。
どこに書いてあったかは忘れてしまいました。


gosub *a dialog sublev stop *a button "OK",*b dialog sublev stop *b dialog sublev return



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