数组越界错误 VB

Array Out of bounds error VB

对于我上一个问题的糟糕措辞,我深表歉意,当时我半夜半睡着了。这次我会尽量说得更清楚。

我目前正在为迷你条形码扫描仪和库存管理程序编写一些代码。我已经输入并整理好了所有内容,但是我的数组有问题。

我目前正在尝试提取库存文件的内容并将它们分类到产品 table 中。 这是我当前获取数据的代码:

        Using fs As StreamReader = New StreamReader("The File Path (Is private)")
        Dim line As String = "ERROR"
        line = fs.ReadLine()
        While line <> Nothing

            Dim pos As Integer = 0
            Dim split(3) As String
            pos = products.Length
            split = line.Split("|")
            productCodes(productCodes.Length) = split(0)
            products(products.Length, 0) = split(1)
            products(products.Length, 1) = split(2)
            products(products.Length, 2) = split(3)
            line = fs.ReadLine()
        End While
    End Using

我已经确定文件路径确实指向文件。我查看了调试,发现所有数据都进入了我的 "split" table。我一开始尝试传输数据就抛出错误。

这是我声明正在使用的两个 table 的地方:

    Dim productCodes() As String = {}
    Dim products(,) As Object = {}

有人可以解释为什么会这样吗?

提前致谢 ~水电

像您一样声明数组:

Dim productCodes() As String = {}
Dim products(,) As Object = {}

您正在为所有数组分配大小 0,因此在循环期间,它最终会尝试访问之前未向编译器声明的位置。这与声明一个大小为 10 Dim MyArray(10) 的数组并尝试访问位置 11 MyArray(11) = something.

相同

您应该以适当的大小声明它,或者在执行时重新调整它:

Dim productCodes(10) As String

Dim productCodes() As String
Dim Products(,) As String
Dim Position as integer = 0
'code here
While line <> Nothing      
    Redim Preserve productCodes(Position)
    Redim Preserve products(2,Position)
    Dim split(3) As String
    pos = products.Length
    split = line.Split("|")
    productCodes(Position) = split(0)
    products(0,Position) = split(1)
    products(1,Position) = split(2)
    products(2,Position) = split(3)
    line = fs.ReadLine()
    Position+=1
End While