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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0819
コウノトリリピートの途中で配列の要素数エラーになります汗7解決


コウノトリ

リンク

2016/8/19(Fri) 12:53:13|NO.76651

下の部分でscnum=700*500(ディスプレイの大きさ)で全箇所の色情報を取得するという目的のプログラムなのですが、いつもカウント700で配列の要素が無効ですとエラーが出ます。
何がおかしいのでしょうか??

repeat scnum
gsel 0, 1 title "結果抽出中:"+cnt pget dotx, doty dotnumr(dotx, doty)=ginfo_r dotnumg(dotx, doty)=ginfo_g dotnumb(dotx, doty)=ginfo_b gsel 2, 1 mes dotnumr(dotx, doty) mes dotnumg(dotx, doty) mes dotnumb(dotx, doty) await 1 dotx=dotx+1 If dotx>700{ dotx=0 : doty=doty+1 } loop



この記事に返信する


InoueSoftware

リンク

2016/8/19(Fri) 15:02:42|NO.76652

最初の行に二次元配列の宣言をしたらいいと思います。

dim dotnumr,701,501 dim dotnumg,701,501 dim dotnumb,701,501




コウノトリ

リンク

2016/8/19(Fri) 15:54:16|NO.76654

私のソース一部しか載せていないので載っていませんでしたが、一応配列宣言は
dim dotnumr, 700, 500
dim dotnumg, 700, 500 dim dotnumb, 700, 500
という風にしていました。違う点は1少ないんですよね、、、
1多いのはなぜなのでしょう??



コウノトリ

リンク

2016/8/19(Fri) 16:23:29|NO.76655

とにかく1多くないといけないってことですね!ありがとうございましたm(__)m



KOMARI

リンク

2016/8/19(Fri) 17:09:38|NO.76656

こんにちはー(・ω・)

エラーが出た時に、ちゃんとデバッグウィンドウで変数の値は確認しましたか?

dotnumr(dotx, doty)=ginfo_r
の行でエラーが出るので、dotxとdotyを確認すべきですね。

こちらがテストしたところ、dotx==700の時にエラーがでました。
dotnumr(700, doty)をどうやって参照するんですかねえ…って話ですね。
そもそも、スクリーンのX座標は0から699までですしね。

結論:

× If dotx>700 ○ If dotx>=700
こうすればエラーは出なくなります。
つまり、
>>とにかく1多くないといけないってことですね!
というのは間違いです。


どうでもいい話:

dotx=dotx+1 If dotx>=700{ dotx=0 : doty=doty+1 } ↓ dotx = cnt\700 : doty = cnt/700
とすればスマートにかけたりもします。
これなら、今回みたいな評価式の書き間違いもしなさそうに見える。
ま、実行速度はどうだか知らないけど(・ω・)



コウノトリ

リンク

2016/8/19(Fri) 18:32:28|NO.76657

こんばんはー(・〜・)
回答ありがとうございます、なるほど、配列宣言は700,500で合っていましたか、、、
そしてx座標が0から699までしかないのは初めて知りました、ありがとうございます!
これで他に作った過去作品も修正の必要がありそうです汗

P.S.
ホームページ拝見させて頂きました!いろんな作品を作られていて羨ましいです、、、



KOMARI

リンク

2016/8/20(Sat) 01:35:58|NO.76659

再びこんばんは〜(・ω・)

>>x座標が0から699までしかない
とおっしゃっていますが、誤解のないように一応補足をいれときます。
scnum=700*500(ディスプレイの大きさ)
と書いていたので、X700*Y500と解釈しました。
ですので、"Xのサイズが700の場合は"0〜699ですよ、と書いたわけです。
そして、配列のサイズが700なら、要素の番号として書けるのもやっぱり0〜669ですしね。

おまけ:
>>ホームページ拝見させて頂きました!いろんな作品を作られていて羨ましいです、、、
作品は、それなりにいろいろ作っていますが、まともなのは少ししかないです(・ω・;)
コンテストに出して賞をとれたものは多分まともですヽ(・ω・)ノ



コウノトリ

リンク

2016/8/20(Sat) 09:54:49|NO.76660

はい、おっしゃる通りX700、Y500のスクリーンを作成しました。つまりscreen命令のx,yの値は大きさで始点0から699までと始点0から499までなわけですね(・〜・)

いやー賞も取ってらっしゃるとは素晴らしい、、、



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