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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1004
GrapeColorhsp3utilのarray2note命令について4解決


GrapeColor

リンク

2011/10/4(Tue) 01:10:25|NO.41978

最近質問ばかりで申し訳ありません
hsp3utilのarray2note命令を使用したところ
#Error6 in line 304 (hsp3util.as)
-->パラメータの方が違います
と言われたのですが改善方法が全く分かりません
どなたかお教えていただけませんか?



この記事に返信する


pizza

リンク

2011/10/4(Tue) 02:59:50|NO.41979

hsp3.2ではエラーは出ませんでした。


#include "hsp3util.as" sdim buf, 10, 10 repeat 10 buf.cnt = "abcdefghi" loop array2note note, buf mes note stop



Cookies

リンク

2011/10/4(Tue) 06:36:34|NO.41980

とりあえずsample\basic\arraynote.hsp でも実行してみてください。
私はエラーは出ませんでした。


そのバグが出るスクリプトを載せてもらえば解決は速いのですが。


>#Error6 in line 304 (hsp3util.as)
>-->パラメータの型が違います
じゃあパラメータの型がちがうんでしょうね。

別にarrayとvarが逆でもそのエラーは起きないようです。
ちゃんと両方の引数は変数でしょうか。(note2arrayならまだしも、array2noteだと考えにくいですが。)

あと、試してみたら、配列はintじゃいけないようです。

#include "hsp3util.as" a=1,2,3 b="" array2note b,a
だとエラーが起きます。(bを0にしたところで変わりません。)



ひらまる

リンク

2011/10/4(Tue) 06:37:47|NO.41981

パラメータの型が違うって言われてるなら、パラメータの型が違うのでしょう。

今見たらhsp3util.asの304行目は

len += strlen(_p2(cnt)) + 2
でした。

察するに、_p2が文字列型配列ではない。
すなわちarray2noteの第二引数が文字列型になっていないのでしょう。
解決方法としては、array2noteに渡す配列を文字列型にするか、
そもそもarray2noteを使わずに自前で配列を文字列に変換するかです。


ていうかarray2noteの中身、どうしてこんな処理方法を取っているのでしょうか…?

#deffunc array2note var _p1, array _p2 ; ; 文字列型の配列変数を複数行文字列として取得する ; array2note 変数1,変数2 ; (変数2で指定した1次元の配列変数を変数1(複数行文字列)に変換します) ; (扱える配列は1次元配列のみになります) ; if length2(_p2) > 0 : dialog "array2note:error" : return index = 0 : len = 1 foreach _p2 len += strlen(_p2(cnt)) + 2 loop sdim _p1, len foreach _p2 poke _p1, index, _p2(cnt) index += strsize poke _p1, index, "\n" index += 2 loop return
私なら以下のように書きますが、これでは何か問題があるのでしょうか…?

TestArray1 = "A", "B", "C" array2note TestNote1, TestArray1 mes TestNote1 TestArray2 = 1, 2, 3 array2note TestNote2, TestArray2 mes TestNote2 dim TestArray3, 2,2,2,2 repeat 2:d1=cnt:repeat 2:d2=cnt:repeat 2:d3=cnt:repeat 2:d4=cnt TestArray3( d1, d2, d3, d4 ) = rnd( 100 ) loop:loop:loop:loop array2note TestNote3, TestArray3 mes TestNote3 stop #deffunc array2note var _p1, array _p2 ;文字列型以外の配列にも対応 ;4次元までの配列に対応 sdim _p1 repeat length( _p2 ) d1 = cnt if length2( _p2 ) == 0 : _p1 += str( _p2( d1 ) ) + "\n" repeat length2( _p2 ) d2 = cnt if length3( _p2 ) == 0 : _p1 += str( _p2( d1, d2 ) ) + "\n" repeat length3( _p2 ) d3 = cnt if length4( _p2 ) == 0 : _p1 += str( _p2( d1, d2, d3 ) ) + "\n" repeat length4( _p2 ) d4 = cnt _p1 += str( _p2( d1, d2, d3, d4 ) ) + "\n" loop loop loop loop return



GrapeColor

リンク

2011/10/4(Tue) 10:27:30|NO.41983

sdimで変数初期化したほうが手っ取り早かったです
解決のヒントをいただきありがとうございました><



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