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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0419
ラママ多次元配列でdoubleは使えないのでしょうか?5解決


ラママ

リンク

2019/4/19(Fri) 13:07:04|NO.87213

このソースで配列の要素が無効です、と出てしまいます。
一次元配列にするとエラーは消えるのですが、多次元配列だとエラーが出ます。
多次元配列に少数は使えないのでしょうか?
(画面のサイズによって座標が決めれるように全体のサイズから1/1000を一マスとして座標を決めています)

wy = double(ginfo(21))
wx = double(wy * 16/9)

x = double(wx/1000)
y = double(wy/1000)

n = 10
m = 10

dim z,n,m

repeat n
i = cnt
repeat m
j = cnt
z(i,j) = x*100
loop
loop

stop

知識が浅いためそもそもなにかを勘違いしているかもしれません。
どなたかアドバイスいただけませんでしょうか?



この記事に返信する


リンク

2019/4/19(Fri) 14:14:03|NO.87214

dim

ddim
にしたら直りませんか?



Ponyo

リンク

2019/4/19(Fri) 15:55:26|NO.87216

初期状態の型と代入する型が違う可能性が高いです。
楽な初期化方法ではdimtypeという命令があります。
これはdimと同じく要素数を指定できるに加えられ、変数の型も決めれることができます。

dim z,n,m を dimtype z, vartype("double"), n,m に変えてみてください。
これは投稿者さんが求めている配列変数zをdouble型で使用することになります。

もしdimtypeを使いたくない場合は、repeat〜loopで配列変数の初期値に1.0を掛ければ、
同じように動作しますがdimtypeの方が1行で収まるのでお勧めします。



Ponyo

リンク

2019/4/19(Fri) 16:00:14|NO.87217

vartypeは次のように指定することができます。

vartype("int") : 整数型
vartype("str") : 文字列型
vartype("double") : 実数型

これを組み合わせてdimtypeを使用する。という感じです。
参考になれば幸いです(*'▽')



X

リンク

2019/4/19(Fri) 22:42:53|NO.87220

猫さんのおっしゃられているddimを使うのが簡単です。
ddimはマクロで実装されておりPonyoさんのいうdimtype〜を簡潔に記述できるようにしたもので
内部では同じことが行われています。

dim z,n,m
の部分を

ddim z,n,m
と書き換えるだけなのでそちらで充分解決できるかと思います。



ラママ

リンク

2019/4/20(Sat) 00:37:39|NO.87221

ありがとうございます!
ddimで解決しました。Ponyoさんもありがとうございました。大変参考になりました。



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