配列を作成する
スポンサーリンク
VB6 は、お世辞にも配列の扱いがうまいとは言えません。とりあえず、以下のソースを見てみましょう。
サンプルコード
以下にサンプルコードを示します。
VB6.0 以前
' 各種の配列を宣言する (配列の長さは未定義の状態、Nothing ではない) Dim btArray() As Byte Dim iArray() As Integer Dim lArray() As Long ' 配列を生成する (ここでの配列の長さは 10 で既定の初期値が格納される) Dim fArray(9) As Single Dim dArray(9) As Double ' 値を格納して初期化する fArray(0) = 1.1! fArray(1) = 1.2! dArray(0) = 2.1 dArray(1) = 2.2
このように、宣言と同時に初期値を決めることができません。これに関していえば、宣言の直後に初期化することで回避はできます。
最も重要な問題は、配列に Nothing という概念がないことです。宣言時は、長さが未定義という状態であり、Nothing ではありません。しかし、UBound 関数や LBound 関数で未定義の状態であることは読み取れません。(実行時エラーになる)
これらの具体的な回避策は、以下のような泥臭い手法によって可能です。
VB6.0 以前
' 長さ 0 の Byte 型の配列を作成する Dim btArray() As Byte btArray = vbNullString ' 長さ 0 の String 型の配列を作成する Dim stArray() As String stArray() = Split(vbNullString, vbNullChar) ' 長さ 0 の Object 型の配列を作成する Dim oArray() As Object ' 長さ 0 の Variant 型の配列を作成する Dim vArray() As Variant vArray() = Array()
上記のような場合、LBound 関数の結果は 0、UBound 関数の結果は -1 となります。厳密には長さ 0 の状態とは言えないかもしれません。
これら以外のユーザー定義型については、SafeArrayAllocDescriptor という API 関数を使用します。これについては、検索して調べてみてください。
関連するリファレンス
準備中です。