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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1022
Subプログラムの書き方について9解決


Sub

リンク

2009/10/22(Thu) 06:39:47|NO.28482

HSPを始めて1ヶ月くらいです。
小規模な物をいくつか作りながら慣れてきて最近はエディタの様な物を作ってます。
最初はこじんまりとした物だったのですが作っていくにつれて色々な機能を
追加していくうちに段々とプログラムも長くなってきました。
そして一通り完成に近づいたので「保存・開く」を追加したところ、その「保存・開く」の
挙動がおかしくなる時がありました。
何度か試して、正常に機能する時もあるし、エラーになる時もあるし…。
もしかしたらプログラムの書く位置がいけないのかな?と思い「保存・開く」を
プログラム全体の一番下に持っていった所、そのおかしな挙動もなくなりました。
一番下に持っていく前は「保存・開く」は大体プログラム全体の真ん中辺りにありました。


メインプログラム

「保存・開く」

チェックやソートのプログラム


上記の様な感じです。
位置を変えてからまだそれ程確認はしていないのでもしかしたらこの先エラーが
出るのかもしれませんが…。
そこで質問なのですがプログラムの書き方、書く位置によって挙動が変わるような事は
あるのでしょうか?
今後の参考にしたいと思いますのでご意見お願いします。
ちなみに今書いているプログラムは後から付け足した機能が少なからずあるので
gotoやstopを多様しています。
それでも「保存・開く」を追加するまでは文法ミスエラー以外は出ていなかったと思います。

まだまだプログラム作成、プログラムそのものに慣れていないので言葉足らずや
説明不足があると思いますがご容赦願います。



この記事に返信する


hatter

リンク

2009/10/22(Thu) 06:44:57|NO.28483

>何度か試して、正常に機能する時もあるし、エラーになる時もあるし…。
このエラーはコンパイル時に起こる物?実行時に起こる物ですか?



Sub

リンク

2009/10/22(Thu) 07:04:46|NO.28484

hatterさん

「HSP実行」で起こるエラーです。
あとコンパイルとはexeファイルになった物と解釈してよいのでしょうか?
まだまだプログラム自体に慣れていないので専門用語も解らずで
申し訳ありません…。



inovia

リンク

2009/10/22(Thu) 07:06:55|NO.28485

エラーメッセージは何が出ていますか?



Sub

リンク

2009/10/22(Thu) 07:38:32|NO.28486

inoviaさん

エラーが出ていた時にエラーの行は確認していたのですがエラーメッセージは
確認していませんでした…。
ですので今、「保存・開く」を元の位置に戻したところ、何度試してもエラーが出ません…。
すみません…。



inovia

リンク

2009/10/22(Thu) 07:43:15|NO.28487

もしかして、保存・開くの処理に dialog 16 or 17 を使っていませんか?
HSP 3.2 で デバッグウィンドウを常時表示しておいた状態で、
dialog 16 or 17 を使うと稀にエラーで落ちることがあります。
(たぶんバグだと思います。同じスクリプトでも落ちたり落ちなかったりしますが。)



Sub

リンク

2009/10/22(Thu) 08:33:46|NO.28488

inoviaさん

仰るとおりにHSP3.2で「保存・開く」はdialog 16 or 17を使用しています。
そして今もまた何度か試してみたのですがエラーは確認できませんでした。
dialog 16 or 17自体が原因だとすると何時エラーになるのか解らないんですね…。
dialog 16 or 17を使わない方法だとエディターとしては気の抜けた感じになってしまいますし…。

もしdialog 16 or 17が原因だとすればプログラムの書き方の違いで
エラーが起こる・起こらないと言う事は無いと考えてもよいのでしょうか?
プログラムの効率のよい書き方、綺麗な書き方は別として?



ANTARES

リンク

2009/10/22(Thu) 21:22:47|NO.28502

>あとコンパイルとはexeファイルになった物と解釈してよいのでしょうか?
 ソーススクリプトを中間言語に変換する過程のことです。
「HSP」メニューの「コンパイルのみ」をクリックしたときに
起こるのがコンパイルエラーで、エラーダイアログの先頭に
「コンパイルエラー」と表示されます。
「コンパイル+実行」をクリックしたときに
スクリプトが動き始めてから出るのが実行時エラーです。
コンパイルエラーが残っているとexeファイルを作成することはできません。

 実行時エラーには、HSPが出力するエラーとWindowsが出力する
エラーとがあり、HSPが出力するエラーの場合は
エラーメッセージやエラーコードが重要なヒントとなりますが、
Windowsが出力するエラーの場合、エラーメッセージは
ほとんど参考になりませんが、Windowsが出力したエラーか否かを
判定するという意味では重要です。



GENKI

リンク

2009/10/22(Thu) 21:41:54|NO.28504

エラーに対する個別の対処より、スクリプトの整理整頓のほうが大事かなと思います。

一般に安易にgotoを多用するとプログラムが複雑化してしまい、良くないと言われます。
プログラムの流れが複雑化してしまうと読みにくくなり、ミスを起こしやすくします。
gotoは使ってはいけないわけではありませんが、スクリプトがぐちゃぐちゃにならないよう注意が必要です。使うべきところは使ってください。

間違って別のサブルーチンの途中に、「保存・開く」を追加してしまったのかも知れませんね。
各サブルーチンは全て「ラベル〜return/stop」できちんと閉じているか、一度確認したほうがいいかもしれません。

スクリプトは大きくなるほど間違えやすくなります。
できるだけ整理整頓して書くようにしたほうがいいですよ。デバッグのしやすさにも影響してきますので。
例えば、gosubを使えば必ず元の場所に戻ってくるので、gotoのようにどこにジャンプするか把握しにくくなることはありません。
また、サブルーチンなどの区切りに、コメントで区切り線を入れたりして見やすくするのもひとつの方法です。
スクリプトが巨大な場合は、#includeを使って複数のファイルに分けると、もっと整理がしやすくなると思います。



Sub

リンク

2009/10/22(Thu) 22:43:15|NO.28506

ANTARESさん

コンパイルの件、ご説明ありがとうございます。
コンパイルエラーがあるとexeファイルが作れないというのは初めて知りました。
あとエラーメッセージから解る事が数多くあるのですね。
今度からはエラーの際も注意深く見ていきたいと思います。


GENKIさん

確かにgoto多用な為にプログラムの流れが複雑になってます…。
コメントアウトはしていますがあちこちに飛んでしまっていますので
やはり綺麗なプログラムを書くのは重要な事なのだと痛感しています。
今制作しているエディタはある程度目処がつきそうなので
整理整頓しながら綺麗なプログラムに組み直そうと思います。




今もまた何度か試していたのですが「保存・開く」のエラー現象は起きませんでした。
皆様から頂いたコメントを今後の参考にさせて頂きながらまたプログラムを
組んでいきたいと思います。
コメントして頂いた皆様、本当にありがとうございました。



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