数组越界错误 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
对于我上一个问题的糟糕措辞,我深表歉意,当时我半夜半睡着了。这次我会尽量说得更清楚。
我目前正在为迷你条形码扫描仪和库存管理程序编写一些代码。我已经输入并整理好了所有内容,但是我的数组有问题。
我目前正在尝试提取库存文件的内容并将它们分类到产品 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