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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0524
船丸配列の要素が無効?12解決


船丸

リンク

2008/5/24(Sat) 09:11:49|NO.16061

僕が作っているモジュールの配列文字やらの機能なのですけど、何かのエラーがあるみたいです。

#deffunc utarrini int sur ,str _1dim2 , int _1dim3 , int p2 defs=sur if p2 < 1 { //▲文字列を格納したいのだから dim じゃなく sdim で sdim _1dim1, , _1dim3 ,defs//配列文字宣言(2次元) sdim fontc , , _1dim3 ,defs dim fontsize , _1dim3 ,defs dim fontmode , _1dim3 ,defs dim r , _1dim3 ,defs dim g , _1dim3 ,defs dim b , _1dim3 ,defs repeat _1dim3 //▲確保した配列の変数名は、_1dim じゃなく _1dim1 //▲_1dim2の直後に、全角スペースがあるので 異なる変数名になってしまっている _1dim1 ( cnt ,defs ) = _1dim2 // 入れる r ( cnt ,defs ) = 0 g ( cnt ,defs ) = 0 b ( cnt ,defs ) = 0 fontc ( cnt ,defs ) = "HGP教科書体" fontsize ( cnt ,defs ) = 20 fontmode ( cnt ,defs ) = 0 loop _1_Err=1 //▲_1dim3の直後に、全角スペースがあるので 異なる変数名になってしまっている _1dim_mes=_1dim3 // 回数設定 }else { //▲文字列を格納したいのだから dim じゃなく sdim で sdim _1dim1, , _1dim3, p2,defs //配列文字宣言(3次元) dim r , _1dim3 , p2,defs dim g , _1dim3 , p2,defs dim b , _1dim3 , p2,defs sdim fontc , , _1dim3 , p2,defs dim fontsize , _1dim3 , p2,defs dim fontmode , _1dim3 , p2,defs repeat _1dim3 mcnt = cnt repeat p2 //▲確保した配列の変数名は、_1dim じゃなく _1dim1 //▲_1dim2の直後に、全角スペースがあるので 異なる変数名になってしまっている _1dim1 ( mcnt , cnt ,defs ) = _1dim2 // 入れる fontc ( mcnt ,cnt ,defs ) = "HGP教科書体" fontsize ( mcnt ,cnt ,defs ) = 20 fontmode ( mcnt ,cnt ,defs ) = 0 r ( mcnt , cnt ,defs ) = 0 g ( mcnt , cnt ,defs ) = 0 b ( mcnt , cnt ,defs ) = 0 loop loop _1_Err = 2 //▲_1dim3の直後に、全角スペースがあるので 異なる変数名になってしまっている _1dim_mes = _1dim3 // 回数設定 _1dim_mes2xt = p2 } return #deffunc utarrir int def ,str _p2,int p1 ,int p2 // エラー回避 if _1_Err=0 :return 1 if p1>_1dim_mes :return 2 if p1<0 :return 3 if p2 < 0 & _1_Err!2 { return 4 } else { if p2 >= 0 { _1dim1(p1,p2,def)=_p2 } else { _1dim1(p1,def)=_p2 } } return #deffunc utarrcl int def,int p3 ,int p4 ,int p5,int p1 ,int p2 // エラー回避 if _1_Err = 0 :return 1 if p1 > _1dim_mes :return 2 if p1 < 0 :return 3 if p2 < 0 & _1_Err!2 { return 4 } else { if p2 >= 0 { r ( p1 , p2 ,def ) = p3 g ( p1 , p2 ,def ) = p4 b ( p1 , p2 ,def ) = p5 } else { r ( p1 ,def ) = p3 g ( p1 ,def ) = p4 b ( p1 ,def ) = p5 } } return #defcfunc utarrst int def ,int p1 ,int p2 // エラー回避 if _1_Err=0 :return 1 if p1>_1dim_mes :return 2 if p1<0 :return 3 if p2 < 0 & _1_Err!2 { return 4 } else { if p2 >= 0 { return _1dim1(p1,p2,def) } else { return _1dim1(p1,def) } } return #deffunc utarrps int def ,str _p2 , int p1 ,int p2 // エラー回避 if _1_Err=0 :return 1 if p1>_1dim_mes :return 2 if p1<0 :return 3 if p2 >= 0 { _1dim1(p1,p2,def)+_p2 } else { _1dim1(p1,def)+_p2 } return #deffunc utarrfont int def ,int p1 , int p2 , str p3 , int p4 , int p5 // エラー回避 if _1_Err = 0 :return 1 if p1 > _1dim_mes :return 2 if p1 < 0 :return 3 if p2 < 0 & _1_Err!2 { return 4 } else { if p2 >= 0 { fontc ( p1 , p2 ,def) = p3 fontsize ( p1 , p2 ,def) = p4 fontmode ( p1 , p2 ,def) = p5 } else { fontc ( p1 ,def ) = p3 fontsize ( p1 ,def ) = p4 fontmode ( p1 ,def ) = p5 } } return #deffunc utarrmes int def ,int _taim,int ut1,int waf ,int _1mespri ,int _1mespri2 ,int kaker , int colorf , int fontf ,int _1mx ,int _1my if _1_Err=0 :return 1 if _1_Err=1 { repeat _1dim_mes if ut1 = 0 { pos rnd ( _1mx ) - _1mespri , rnd ( _1my ) - _1mespri2 } else { pos gdp * kaker + _1mespri , cnt * kaker + _1mespri } if fontf = 1 :font fontc ( cnt ) , fontsize ( cnt ) , fontmode ( cnt ) if colorf = 1 :color r ( cnt ) , g ( cnt ) , b ( cnt ) mes _1dim1 ( cnt , def ) if waf ! 1 :await _taim loop } else { repeat _1dim_mes gdp = cnt repeat _1dim_mes2xt if ut1 = 0 { pos rnd ( _1mx ) - _1mespri , rnd ( _1my ) - _1mespri2 } else { pos gdp * kaker + _1mespri2 , cnt * kaker + _1mespri2 } if fontf = 1 :font fontc ( gdp , cnt , def ) , fontsize ( gdp , cnt , def ) , fontmode ( gdp , cnt , def ) if colorf = 1 :color r ( gdp , cnt , def ) , g ( gdp , cnt , def ) , b ( gdp , cnt , def ) mes _1dim1( gdp , cnt , def ) loop if waf!1 :await _taim loop } return
何か異常はあるのでしょうか?



この記事に返信する


begriff

リンク

2008/5/24(Sat) 10:45:56|NO.16063

まず
#module 〜 #globalで囲んでもらいたいものだ。(直コピなのかな?)

そもそも配列文字が何なのか、おそらく皆わからないと思うので、そこの解説を頼みます。
(個人的解釈は連想配列だが)

それと 挙動を調べる上で、そのモジュールを使ったサンプルも示してもらいたい。(どう使えばいいのか見当がつかないので)



flory

リンク

2008/5/24(Sat) 11:56:12|NO.16064

さらに言えば、変数名などもわかりやすいものにしたほうがいいと思います。
あと、スクリプトの書き方もなんだか統一感がないですねぇ。。。

見たところ、おそらく
「文字列にフォント、文字サイズ、文字色を指定して、配列として扱う」
というようなモジュールだと思われます。が、細かいところまではわかりかねます。

エラーには「配列の要素が無効です」と出るのだから、配列変数に代入している箇所が
一番怪しいと思いませんか?

というより、「配列の要素が〜」エラーくらいは自分で解決すべきでしょう。



GENKI

リンク

2008/5/24(Sat) 13:00:56|NO.16065

> 僕が作っているモジュールの配列文字やらの機能なのですけど、何かのエラーがあるみたいです。
> 何か異常はあるのでしょうか?

エラーがあるのでしたらそれは普通は異常があるという意味だと思います。

まずは状況がわかりません。下記ページを参考にもう少し状況をまとめていただけませんでしょうか?
5W1H
http://ja.wikipedia.org/wiki/5W1H


それと、貼り付けられたスクリプトを見ただけで、問題箇所の絞込み(デバッグ)をやっていないのがよくわかります。
もう少しデバッグをがんばってみてはいかがでしょうか?
たくさんある#deffuncの中でどれが問題があるのかぐらいまでは絞り込めるんじゃないでしょうか。


まとめる時とデバッグの際に参考になるページを紹介しておきます。

デバッグの仕方
http://quasiquote.org/hspwiki/%e3%83%87%e3%83%90%e3%83%83%e3%82%b0%e3%81%ae%e4%bb%95%e6%96%b9

HSP3のFAQ:エラーメッセージの意味と対処法が分からない
http://quasiquote.org/hspwiki/HSP3%e3%81%aeFAQ%3a%e3%82%a8%e3%83%a9%e3%83%bc%e3%83%a1%e3%83%83%e3%82%bb%e3%83%bc%e3%82%b8%e3%81%ae%e6%84%8f%e5%91%b3%e3%81%a8%e5%af%be%e5%87%a6%e6%b3%95%e3%81%8c%e5%88%86%e3%81%8b%e3%82%89%e3%81%aa%e3%81%84

ではよろしくお願いします。




---
ところで久しぶりにHSPwikiを見たのですが、ものすごく使いにくくなっていますね。



船丸

リンク

2008/5/24(Sat) 14:21:01|NO.16068

とりあえず問題のスプリクトを。

utarrini 2,"w",1000,10 utarrmes 2,1,0,0,20,20,0,0,0,660,500 //異常なし utarrini 3,"o",1000,10 utarrmes 3,1,0,0,20,20,0,0,0,660,500 //エラー発生
です。
簡単に言うと、utarriniとutarrmesが怪しいです。

配列文字が何なのかは、仮の名前なので突っ込まないでください。



f

リンク

2008/5/24(Sat) 18:43:59|NO.16073

・・・「何がどのように異常」なのか説明もせずに誰が何を答えられると言うのか。
少なくとも「エラー」は出ないが。



GENKI

リンク

2008/5/24(Sat) 19:25:14|NO.16074

とりあえずNO.16061のスクリプトを#module 〜 #globalで囲んで、NO.16068のスクリプトを実行してみました。
エラーメッセージが出ることもなく正常に終了しました。
このスクリプトは記述されたとおり問題なく動作しているようです。


> 何かのエラーがあるみたいです。

とはどのような症状でしょうか?

> 簡単に言うと、utarriniとutarrmesが怪しいです。

これだけの説明では何もわかりません。
せめてスクリプトが、
 ・本来ならどのように動作する予定なのか。
 ・どのような動作をエラーと考えているのか。
ぐらいの説明はしていただかないことには、なにも助言することができません。
説明は具体的に詳しく(例えば年下に教えるような感じで)書くようにしていただけないでしょうか。
ほかの回答者の方も困っています。
文章だけというのは、顔を合わせて話すのに比べると伝えたいことが伝わりにくいものなんです。


さてところで、NO.16068のスクリプト実行には utarrir, utarrcl, utarrst, utarrps, utarrfont は使用されていないようです。
最初の投稿時に削除したものを投稿することはできなかったのでしょうか?



船丸

リンク

2008/5/24(Sat) 23:19:24|NO.16078

間違いました。

確か、同じ変数名だからエラーが起きるみたいです。



これの対策には、さらに改良するしかありません。

なので、解決という事にしておきます。

以上。



コンテスト出品者

リンク

2008/5/25(Sun) 09:55:45|NO.16096

皆様にいろいろ考えていただいたあげく、アドバイスに何一つ答えることなく幕引きされると
接した人には時間と労力を無駄に消費したという徒労感だけが残りますな。

質問すると言うことは相手の時間と労力を必要とするということを
もう少し考えては如何でしょうか?



StarratS

リンク

2008/5/25(Sun) 11:33:57|NO.16100

船丸さんへ>
自己流でスクリプトを書くと誰からも相手にされなくなるってことを覚えておいたほうがいいと思う。

みなさんへ>
熱くなるな。子供掲示板だぞ。



SYAM

リンク

2008/5/25(Sun) 14:08:42|NO.16104

子供掲示板っていうと誤解する人(…そして一番誤解して欲しくない人)は誤解しそうですね。
別に子供用の掲示板と銘打ってるわけではないですから、
子供だからって好きにしても多めに見てもらえる場じゃあないハズです。

子供が来ちゃいけないわけでもないので、投稿はもちろんしてもいいでしょうけど
何か注意をされたら次から気をつけましょうね。
でないとそのうち相手にされなくなるってのは、ここに限った話でもないです。
HSPだけの話じゃないですが、きょうびプログラマにとっては情報収集ってとても大事です。

情報収集の場で相手にされないなんてのは、非っ常-----------に、不利です。
そういう意味では、うまく質問をしてうまく返答をもらうことも、プログラマの適性のひとつです。



船丸

リンク

2008/5/25(Sun) 18:57:55|NO.16109

この事については謝ります。

初歩的なミスなのに、質問しました。
この件はutarriniを二つに分ける事で解決しました。

この後は自力で解決させます。



yamineko

リンク

2008/5/25(Sun) 22:44:59|NO.16123

僕は個人的には、許せる範囲ですよ。

この所の船丸さんの頑張りを見ていると、
(とりあえず動くものを作ってくるとか)
なんだかやる気を貰ったように思います。

まあ、書き方が悪い(プログラム、掲示板とも)というのは、
だんだん直っていったら良い事かなぁ
と思ったりします。

落ち込まないで、頑張ってね。



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