2018年5月16日水曜日

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

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

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

  Private Sub GetLength_Sample()
    Dim Arr(3, 5, 9) As String
    Dim i, j, k As Integer
    Debug.Print(Arr.GetLength(0)) '4
    Debug.Print(Arr.GetLength(1)) '6
    Debug.Print(Arr.GetLength(2)) '10

    For i = 0 To Arr.GetLength(0) - 1
      For j = 0 To Arr.GetLength(1) - 1
        For k = 0 To Arr.GetLength(2) - 1
          Debug.Print(i & ":" & j & ":" & k)
        Next
      Next
    Next
  End Sub

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

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

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

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

0 件のコメント:

コメントを投稿