VBScript从数组中获取自定义对象

时间:2014-07-17 10:45:57

标签: arrays vbscript

我在VBScript中有一些数组的问题:我有一个中心数组,在这里我保存了一些自定义对象。稍后,我想访问这些元素以打印出对象。但这不起作用。 这是我的代码;

sub start
    redim selektionsArray(0)
    for i = 0 to 10
            Dim TheDude : Set TheDude = (New Selektion2)("a" & i, "b" & i)

            ReDim Preserve selektionsArray(ubound(selektionsArray) + 1)
            set selektionsArray(ubound(selektionsArray)) = TheDude
            'Works
            msgbox selektionsArray(ubound(selektionsArray)).Typ & " = " & selektionsArray(ubound(selektionsArray)).Wert
    next 

    dim i
    for i = 0 to ubound(selektionsArray)
        set element3 = selektionsArray(i)
        'don't work
        msgbox selektionsArray(i).Typ & " = " & selektionsArray(i).Wert
    next

    dim sel
    for each sel in selektionsArray
        'don't work to
        msgbox sel.Wert
    next

    'strange thing is ubound(selektionsArray) --> 11

end sub

Class Selektion2
     Private m_typ
     Private m_wert

     Public Default Function Init(Typ, Wert)
         m_typ = Typ
         m_wert = Wert

         Set Init = Me
     End Function

     Public Property Get Typ 
         Typ = m_typ
     End Property

     Public Property Get Wert
         Wert = m_wert
     End Property

     public function getWert()
        getWert = m_wert
     end function
 End Class

我无法访问初始化循环之外的数组元素,这有什么问题?

1 个答案:

答案 0 :(得分:1)

您的错误是假设

redim selektionsArray(0)

创建一个空数组。它没有,数组在索引0处有一个空的第一个元素。添加更多对象没有问题,但是当你尝试

set element3 = selektionsArray(i)

对于i = 0,或者要访问For Each循环中的第一个sel,该空元素不能用于设置/ a变量。因此,请更改“创建我的阵列”#39;声明

redim selektionsArray(-1)