コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
あんちもん ◆8qCJSJ1bKTIQ
2019/4/2 11:36
質問
DATファイルの数値配列への格納について
DATファイルを読み込む時
LOAD “DAT:ファイル名“,数値配列
と書くはずなのですが、この「数値配列」には要素数を書かないのはなぜなのでしょうか。
また、配列であるので、事前に
DIM 数値配列[要素数]
といった風に宣言しなければならないのですが、要素数はいくつにするべきなのか、その基準がわかりません。

コメント

アバター
初心者 2019/4/2 12:19 ◆ULvuffpmw1rp
宣言するときの要素数は0でいいよ。
要素数なら勝手に調整されますので。
また、ロードするときに要素数を書かないのは、
ロードする相手は配列変数なので、一つの変数では収まらない。なので配列変数に入れる必要がある。そのとき要素数を書いてしまったら実質一つの変数になってしまう。からだと思います。
アバター
あんちもん 2019/4/2 12:45 ◆8qCJSJ1bKTIQ
初心者さん
回答ありがとうございます!
要素数は自動調整されるんですね。知りませんでした…
要素数を書かない理由もなんとなくですが納得いたしました!
アバター
しんいち 2019/4/2 13:44 ◆lHy.hAWXbthn
配列の[数値]は、宣言するときは要素数、値を入れるときは番号(配列の何番目)、と考えると良いかな。なので配列のうちの1つにだけ値を入れるときは[数値]を指定する。
GSPOIT 0,0,G%[0]
LOADとか、複数の値をまとめて配列に入れるときは[数値]は要らない(何番目って訳じゃないから)。

配列が1次元であれば、要素数を自動調整してくれて便利ですが、2次元とかだと調整してくれないので、宣言時に必要な要素数を計算しといて指定しなきゃならないとか、ちょっと面倒。DATファイルも2次元でセーブされてたら2次元配列でLOADしなきゃエラーになるはずだけど、誰かが作った1次元じゃない謎のDATファイルを読み込もうとしたら、次元数、要素数分からなくてあぼ〜ん。なので配列はなるべく1次元。
アバター
あんちもん 2019/4/2 14:04 ◆8qCJSJ1bKTIQ
Soybeanmanさん、しんいちさん
回答ありがとうございます!
配列全体を参照するという感覚がつかめていなかったので、解説していただき非常に助かりました!
アバター
あんちもん 2019/4/2 14:06 ◆8qCJSJ1bKTIQ
ひとまず疑問なところは納得いきました!
ご協力いただいたみなさまに改めて感謝申し上げます!ありがとうございました!
アバター
たんじぇ 2019/4/2 15:42 ◆WDmFkVwZ4yMl
すでに回答してあるけどこちらにも。

LOADやGSAVEなどの配列を渡して読み込んだ結果を配列に返す場合、公式命令表に書いてある「配列の要素が不足する場合、1次元配列に限り自動追加される」のとおり、要素が増えて返ります。
(なぜかGSAVEの命令表には書いてあるのにLOADには書いてないけど)

配列要素0で渡すと、読み込んだサイズの配列要素数になって配列が返るので、その後の配列要素数を処理するサイズと期待している命令が正しく動作します。

配列要素 200を用意しておいて、サイズ50のデータをLOADしたときに、配列要素は 200のままなのに、読み込んだデータは 50 までしか入っていない状態となっていて、これを配列要素全部を処理するような命令に渡したときに、最初の50は正しいデータが入っているのに残りの150は正しくないデータが入っていておかしな動きになるかもしれません。

それを防ぐために読み込んだら絶対に配列要素が増えるように通常は配列要素0 の配列を渡すのが良いです。
アバター
あんちもん 2019/4/2 16:51 ◆8qCJSJ1bKTIQ
たんじぇさんも解説ありがとうございます
今回のやりとりで知らないことを多く学べました!

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -