2018年5月16日水曜日

多次元配列の要素数をとってみる。

2次元配列をぐるぐるさせるのに、1次元配列と同様、.Lengthで終了判断したら、
実行時にOut of rangeだかで怒られた( ゚-゚)~゚
…じゃぁ、こうだ!Arr(0).Length!!
コンパイルすら通らなかった(笑

素直にググると、.GetLengthなるプロパティがあった。
ちょっと動作確認で作ってみた。

  1. Private Sub GetLength_Sample()
  2. Dim Arr(3, 5, 9) As String
  3. Dim i, j, k As Integer
  4. Debug.Print(Arr.GetLength(0)) '4
  5. Debug.Print(Arr.GetLength(1)) '6
  6. Debug.Print(Arr.GetLength(2)) '10
  7.  
  8. For i = 0 To Arr.GetLength(0) - 1
  9. For j = 0 To Arr.GetLength(1) - 1
  10. For k = 0 To Arr.GetLength(2) - 1
  11. Debug.Print(i & ":" & j & ":" & k)
  12. Next
  13. Next
  14. Next
  15. End Sub

うむ。コレでよし(*゚-゚)

てゆかね、それなら1次元配列でも、.GetLengthを使うべきでしょ( ゚-゚)~゚
あちこちで、.Lengthで終了判定させてるExampleあるけど、
多次元でも対応できる.GetLengthに統一すべきだと声を大にして言いたい!!
…ボクみたいにハマるヤツがいるから( ゚-゚)~゚

ソレよりもまぁ、配列宣言と、要素数、MAXの添字が
ばらんばらんなVBの配列のほーが分かりづらいが。

元々、BASICで、配列のINDEXは1から始まっていたので、すげースッキリしてたのに、
他の言語との対応のためかねぇ…中途半端にINDEXだけを0からにしやがって。
どうせ変えるなら、そっくりそのままCなりと同様にすればよかったのに…。

0 件のコメント:

コメントを投稿