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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1213
FunnyMakerhsp3dishにおけるユーザー定義関数の不具合?2解決


FunnyMaker

リンク

2013/12/13(Fri) 20:45:31|NO.58714

hsp3dishにおけるユーザー定義関数の挙動で不具合と思われるものを発見したので報告致します。

Windows版dishでは問題ないのですが、Android版でエラーが発生します。

下のスクリプトですと、
logcatで確認したところ、10行目に当たる場所で エラー40 ("関数の戻り値が設定されていません") が出ています。
つまり、このreturnがユーザー定義関数における最後のreturnだと解釈されています。

#include "hsp3dish.as" #module mod1 #defcfunc test logmes "run command \"test\"..." gosub *LAB1 return 0 *LAB1 logmes "jumped to *LAB1 in mod1" return #global k = test() logmes "OK."

それならばと、上のスクリプトの10行目のreturnの右隣に 0 を置いて"関数の戻り値"とすると、
下のスクリプトになりますが、
logcatで確認したところ、おそらく7行目のreturnでしょうか?ここで エラー10 (サブルーチン外のreturnは無効です) と出ます。
つまり、このreturnはgosubによるサブルーチンジャンプのreturnではないと解釈されています。

#include "hsp3dish.as" #module mod1 #defcfunc test logmes "run command \"test\"..." gosub *LAB1 return 0 *LAB1 logmes "jumped to *LAB1 in mod1" return 0 #global k = test() logmes "OK."

この件に関して、私はhsp3dishの不具合ではないかと考えておりますが、いかがでしょうか?



この記事に返信する


FunnyMaker

リンク

2013/12/13(Fri) 20:54:05|NO.58715

追記ですが、↑の実験は最新版のhsp3dishで行ったものです。



FunnyMaker

リンク

2013/12/15(Sun) 21:36:34|NO.58764

Android版hsp3dishにおいて、
ユーザー定義"関数"内で別のユーザー定義"命令"を呼び出した場合でも上の記事と同様な事象が確認されましたので、報告致します。

下のスクリプトで試しました。
どうやら、6行目のreturnでユーザー定義関数「test」を終了しようとしているようです。
logcatで確認したところ、 エラー40 が出ていました。
本来なら13行目のreturnで「test」関数が終了するべきだと思います。


#include "hsp3dish.as" #module mod1 #deffunc test2 logmes "run command \"test2\"..." return #global #module mod2 #defcfunc test logmes "run command \"test\"..." test2 return 0 #global k = test() logmes "OK."



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