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


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
0728
ルーイヨッシースタックが破壊される?4解決


ルーイヨッシー

リンク

2006/7/28(Fri) 17:19:29|NO.1609

こんにちは。先ほど、HSPコンテストのショートプログラム部門の
作品を作っていたのですが、突然

スタック領域がオーバーフローしました。

なんてでたんです。調べてみるとシステムエラーらしいじゃないですか。
バグ?と思いましたが、なにぶん自分は未だにタマゴなので、自分のミスもあるか、
意見を頂きたくて投稿しました。

	goto *main
#deffunc menudraw redraw 0,0,0,300,300 color 50,50,150 boxf 100,155,100,180 if mord=0 { pos 100,155 mes "" } else { pos 100,170 mes "" } redraw 1,0,0,300,300 if menuky&$80 { goto *main } return *main getkey mchku,65 getkey mchks,90 getkey echku,75 getkey echks,77 getkey menu,27 gosub *kychk wait 1 goto *main *kychk if menu=1 { goto *menumord } return *menumord redraw 0,0,0,300,300 redraw 1,0,0,300,300 *menuloop stick menuky,$8f, if menuly&$1 : mord++ if menuly&$2 : mord++ if menuly&$4 : mord++ if menuly&$8 : mord++ menudraw wait 1 goto *menuloop

以上は、ESCキーでメニューを表示するスクリプトの一部です。
これを実行すると、システムエラーが出ます。
重複している命令があって、原因かもしれないので、一緒に載せました。

なにか、文法上おかしいところはないですか?



この記事に返信する


かきしす

リンク

2006/7/28(Fri) 19:27:46|NO.1611

あんまりじっくり解析してないんですが、ぱっと見の感じとして
『#deffunc』 は、『return』で終了するわけですから、
その内部から『goto *main』で、メインルーチンに脱出するのはまずそうな気がします。

とりあえず、人に調べてもらうのなら、プログラム中にコメントで解説をつけた方がいいと思います。
他人の書いたコメント無しプログラムは読みづらいです〜



kz3

リンク

2006/7/28(Fri) 23:29:18|NO.1613

>なにか、文法上おかしいところはないですか?

文法の確認はマニュアルと比較して行います。
#deffuncを書く際の絶対ルールで抜け落ちている部分が2つあります。確認してください。

>バグかどうか

「エラー」=「バグ」とは必ずしもそうなりません。
ルールに逆らったエラーはHSPからの警告です。



ルーイヨッシー

リンク

2006/7/29(Sat) 00:12:13|NO.1614

分かりました。もう一度マニュアルを見てみます。



ルーイヨッシー

リンク

2006/7/29(Sat) 00:17:17|NO.1615

う〜ん、やはり、余りよく分かっていないのにユーザ拡張命令を使ったり、
普通のサブルーチンにすればいいのに、と思いました。以後気をつけます。
お世話様でした。



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