パラメータの型が違うって言われてるなら、パラメータの型が違うのでしょう。
今見たら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