Android版、多次元配列の制限について


 Android版では今の所、2次元配列以上の多次元配列で、データの改変をしようとするとエラーになります。

 なぜか変数の量だか少ないと普通に使えるんですが、多くなると(?)Error7になります。

 Array overflow
Array overflow

 HSPのエラー番号の意味と対処 HSPミニ講座さんのページ

 

 読み込みはできます。
 それと、インクリメントとデクリメントはなぜか大丈夫です。

 実行上で書き込もうとするエラーになるようです。
 
 
 例えば、2次元配列のマップデータのようなものを、あらかじめ map.datのようなデータとして作っておき、それを読み込んで使うような事はできます。

 しかしマップの情報を変えようとして、書き込もうとするとエラーになると言う事です。
 
 
 なぜこうなるのかはサッパリ分かりませし、あるいは実機のメモリ不足(1GB、くらいはあるのだから可能性は低いのかな?)でなってるのかも知れません。

 通常版(ウインドウ版)や webGL版ではなりません。

 1次元配列はいくらでも普通に使えるようです。
 
 
 そこで多次元配列を 1次元配列で表す方法を説明します。
 といっても難しくはありません。

 例えば dim a,10,10のようなものを dim a,100にして扱うだけです。
 データの量は同じ100個です。

 例えばこの例で a(3,2)の座標のデータを 1次元で表すなら、a(3+2*10)で 23番目のデータになるというだけの事です。

 自分は 3次元以上はまず使う事はありませんが、3次元なら dim a,10,10,10だったとして、例えば a(4,5,6)の座標は a(4+5*10+6*10*10)という事になり、a(654)という事になります。

 hyou1
 表かくのめんどくさい(笑)
 
 
 この方法なら擬似的に多次元配列も扱えます。
 
 
 もし実機の制約(メモリ 1GB)が原因なら、今の機種では起こり難いのかもしれませんが、原因が分からないので一応中規模くらいのプログラムからは、始めから 1次元配列で扱うか、読み込むだけのデータなら、あらかじめ作っておくかにした方が良いでしょう。
 
 
 まあ、その内治してくれるかもしれません。

 以上です。

コメントを残す

メールアドレスが公開されることはありません。