VBScript: 動的配列を作成し、要素を追加する方法
使用するのは「Dimステートメント」「Redimステートメント」または 「Redim Preserve」です。
「Redim 配列(最大インデックス)」の場合、
すでに値が格納されている要素の値は保持されません。
一方「Redim Preserve 配列(最大インデックス)」の場合、
すでに値が格納されている要素の値は保持されます。
英単語「Preserve」には保存や保持といった意味があります。
次のサンプルコードは、 動的配列を宣言し、配列の要素数を動的に追加・変更しています。
「Redim Preserve」と「Redim」の場合の動作の違いに注意してください。
'動的配列を宣言 Dim arr() ReDim arr(1) arr(0) = "a" arr(1) = "b" '要素を追加 ReDim Preserve arr(2) arr(2) = "c" WScript.Echo "要素数: " & UBound(arr) + 1 For i = 0 To UBound(arr) WScript.Echo i & " -> " & arr(i) Next ' 要素数を変更(Preserve なし) ReDim arr(3) WScript.Echo "要素数: " & UBound(arr) + 1 For i = 0 To UBound(arr) WScript.Echo i & " -> " & arr(i) Next If arr(0) = "" Then WScript.Echo "True" Else WScript.Echo "False" End If
実行結果
要素数: 3 0 -> a 1 -> b 2 -> c 要素数: 4 0 -> 1 -> 2 -> 3 ->
下のコード部分では「Redim Preserve」で配列の要素を追加しています。 ですから「arr(0)」「arr(1)」の値は保持されています。
'要素を追加 ReDim Preserve arr(2) arr(2) = "c"
一方、下のコード部分では「Redim」のみで配列の要素を追加しています。 ですから「arr(0)」「arr(1)」「arr(2)」の値が保持されず、 空の文字列""になっています。
' 要素数を変更(Preserve なし) ReDim arr(3)