|
|
2009/6/8(Mon) 23:09:40|NO.25581
下のスクリプトでクローン変数を作ったのですが、うまくゆきません。
どうやら、二次元配列を「dup」すると、一次元配列に変換してしまうようです。
これは仕様なのでしょうか?
それとも、自分のパソコンが悪いのでしょうか?
<pra>
dim a,2,2
dim b,2,2
a(0,0) = 1
a(0,1) = 2
a(1,0) = 3
a(1,1) = 4
dup b , a
;mes strf("b(0,0)= %s : b(0,1)= %s : b(1,0)= %s : b(1,1)= %s",b(0,0) ,b(0,1) ,b(1,0) ,b(1,1))
mes strf("b(0)= %s : b(1)= %s : b(2)= %s : b(3)=%s " ,b(0) ,b(1) ,b(2) ,b(3) )
</pra>
|
|
2009/6/8(Mon) 23:22:09|NO.25582
試してみたところ一次元配列になるのは確かですね。
現行のHSP3.1ではstrf関数に複数のパラメータが渡せないので…
dim a,2,2
dim b,2,2
a(0,0) = 1
a(1,0) = 2
a(0,1) = 3
a(1,1) = 4
dup b , a
repeat 4
mes b(cnt)
loop
repeat 2:cntx=cnt
repeat 2
mes b(cnt,cntx);ここでエラー.
loop:loop
…のようにしました。
|
|
2009/6/8(Mon) 23:47:57|NO.25584
今更のようですがどうやら配列変数のaが配列の先頭変数(今回の場合a(0, 0))のエイリアスになるので
メモリ的に展開されたあとの図を考えながらクローン作るしかないみたいです
dim a,2,2
dim b,2,2
a(0,0) = 1
a(1,0) = 2
a(0,1) = 3
a(1,1) = 4
dup b, a(1,0)
repeat 3
mes b(cnt)
loop
dup b , a(0,1)
repeat 2
mes b(cnt)
loop
いずれにせよ配列のクローンというのは不可ってことですかね
あくまで変数に対してのクローンってことになってるみたいですし
|
|
2009/6/9(Tue) 21:58:01|NO.25597
>現行のHSP3.1ではstrf関数に複数のパラメータが渡せないので…
知りませんでした。
自分は現在バリバリ3.2使っています。
今のところかなり順調です。
>いずれにせよ配列のクローンというのは不可ってことですかね
一応、一次元配列なら、正常にクローンできているみたいですが。
何か、問題があるのでしょうか?
|
|
2009/6/9(Tue) 22:20:35|NO.25599
dupは強制的に1次元配列になってしまうようなので、私は2次元配列の場合はマクロと併用して使ってますね
dim a, 2, 2
dup _b, a
w = length(a)
#define ctype b(%1,%2) _b(%1+%2*w)
a(0,0) = 1,2
a(0,1) = 3,4
for i, 0, 2
for j, 0, 2
mes b(j,i)
next
next
|
|