1

vbScript でさまざまな varTypes の配列を反復処理しようとしていますが、成功していません。

注: vbScript 多次元配列ではなく、SINGLE 次元配列について話しています。

次のようにして、テスト配列を正常に作成できます。

Dim aArray : aArray = array("A", "B", array(1,2,3,4), "D", array("have", "a", "happy", "holiday", "!"), 1, "last item")

ご覧のとおり、プライマリ配列には、さまざまなタイプのアイテム、いくつかの文字列、いくつかの整数、およびいくつかの配列があります。次に、ループすると、別の配列を保持する配列項目に反復するまで、すべてがうまくいきます。

この部分に来たときに何をすべきかを知る必要があります。

If typeName(aArray(i)) = "Variant()" Then

配列を反復して出力する完全な関数を次に示します。

For i = 0 to uBound(aArray)
    If typeName(aArray(i)) = "Variant()" Then
        'array item is another array e.g. vbScript typeName variant() 
        response.write "<tr><td>aArray(" & i & ")</td><td><table class=""debugVarsTbl""><tr><th>Value</th><th>typeName()</th></tr><tr><td>[Array()]</td><td>" & typeName(aArray(i)) & "</td></tr></table></td></tr>"
    Else
        'item is a standard string, integer, boolean, date, etc.
        response.write "<tr><td>aArray(" & i & ")</td><td>" & aArray(i) & " (" & typeName(aArray(i)) & ")</td></tr>"
    End If
Next

基本的に、vbScript typeName = Variant() のメイン配列アイテムにアクセスする方法を知る必要があります。

事前に感謝し、幸せな休日、CBWDEV

4

2 に答える 2

1

正しい方向への助けと指針をありがとう。解決策を見つけました。配列のデバッグに使用するルーチンを次に示します。

Sub debugArray(byVal aArray)
    For i = 0 to uBound(aArray)
        If typeName(aArray(i)) = "Variant()" Then
            'array item is another array e.g. vbScript typeName variant() 
            response.write "<tr><td>aArray(" & i & ")</td><td><table class=""debugVarsTbl""><tr><th>Value</th><th>typeName()</th></tr><tr><td>" 
            debugArray aArray(i)
            response.write "</td><td>" & typeName(aArray(i)) & "</td></tr></table></td></tr>"
        Else
            'item is a standard string, integer, boolean, date, etc.
            response.write "<tr><td>aArray(" & i & ")</td><td>" & aArray(i) & " (" & typeName(aArray(i)) & ")</td></tr>"
        End If
    Next
End Sub
于 2012-12-26T12:28:53.680 に答える
1
If typeName(aArray(i)) = "Variant()" Then

する必要があります

If typeName(aArray(i)) = "Variant" Then

また、出力に共通のコードがある場合は、スイッチを使用して、タイプごとに何を変更する必要があるかを判断することをお勧めします。

于 2012-12-25T15:28:34.337 に答える