Arrays 将字符串拆分为数组时出错
基本上,我不能修剪它,除非它在一个消息框。。这很难解释。 以下是两张图片: 1. 2. 这很有效^^^^ 这并不是:Arrays 将字符串拆分为数组时出错,arrays,vb.net,string,Arrays,Vb.net,String,基本上,我不能修剪它,除非它在一个消息框。。这很难解释。 以下是两张图片: 1. 2. 这很有效^^^^ 这并不是: Dim value As String = ary(0).Trim() this is the error---> Dim value1 As String = ary(1).Trim() Dim R As String Dim G As String Dim B As String
Dim value As String = ary(0).Trim()
this is the error---> Dim value1 As String = ary(1).Trim()
Dim R As String
Dim G As String
Dim B As String
Dim outline As String
Dim outlineColor As String
R = Chr(34) & "MouseColorR" & Chr(34)
G = Chr(34) & "MouseColorG" & Chr(34)
B = Chr(34) & "MouseColorB" & Chr(34)
outline = Chr(34) & "ThickMouseEdges" & Chr(34)
outlineColor = Chr(34) & "ThickMouseEdgesPackedColor" & Chr(34)
'based on the value after the equals sign, do something
If value = R Then
MsgBox(ary(1).Trim(Chr(44)))
ElseIf value = G Then
MsgBox("finally")
ElseIf value = B Then
MsgBox("finally")
ElseIf value = outline Then
MsgBox("finally")
ElseIf value = outlineColor Then
MsgBox("finally")
错误是:Terraria Smart Cursor.exe中发生类型为“System.IndexOutOfRangeException”的未处理异常
附加信息:索引超出了数组的边界
全部代码:
公开课表格1
Private Sub NsCheckBox1_CheckedChanged(sender As Object) Handles NsCheckBox1.CheckedChanged
NsGroupBox2.Enabled = NsCheckBox1.Checked
End Sub
Private Sub NsTrackBar1_Scroll(sender As Object) Handles NsTrackBar1.Scroll
NsLabel4.Value1 = NsTrackBar1.Value
End Sub
Private Sub NsTrackBar2_Scroll(sender As Object) Handles NsTrackBar2.Scroll
NsLabel5.Value1 = NsTrackBar2.Value
End Sub
Private Sub NsTrackBar3_Scroll(sender As Object) Handles NsTrackBar3.Scroll
NsLabel6.Value1 = NsTrackBar3.Value
End Sub
Private Sub NsTrackBar6_Scroll(sender As Object) Handles NsTrackBar6.Scroll
NsLabel9.Value1 = NsTrackBar6.Value
End Sub
Private Sub NsTrackBar5_Scroll(sender As Object) Handles NsTrackBar5.Scroll
NsLabel8.Value1 = NsTrackBar5.Value
End Sub
Private Sub NsTrackBar4_Scroll(sender As Object) Handles NsTrackBar4.Scroll
NsLabel7.Value1 = NsTrackBar4.Value
End Sub
Private Sub NsButton1_Click_1(sender As Object, e As EventArgs) Handles NsButton1.Click
If ColorDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
NsLabel4.Value1 = ColorDialog1.Color.R
NsLabel5.Value1 = ColorDialog1.Color.G
NsLabel6.Value1 = ColorDialog1.Color.B
NsTrackBar1.Value = NsLabel4.Value1
NsTrackBar2.Value = NsLabel5.Value1
NsTrackBar3.Value = NsLabel6.Value1
End If
End Sub
Private Sub NsButton2_Click_1(sender As Object, e As EventArgs) Handles NsButton2.Click
If ColorDialog2.ShowDialog() = Windows.Forms.DialogResult.OK Then
NsLabel9.Value1 = ColorDialog2.Color.R
NsLabel8.Value1 = ColorDialog2.Color.G
NsLabel7.Value1 = ColorDialog2.Color.B
NsTrackBar6.Value = NsLabel9.Value1
NsTrackBar5.Value = NsLabel8.Value1
NsTrackBar4.Value = NsLabel7.Value1
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'reads each line from the text file one at a time
For Each line As String In IO.File.ReadLines("C:\Users\Matthew\Documents\My Games\Terraria\config.json")
'split the string by equals sign
Dim ary As String() = line.Split(":")
Dim value As String = ary(0).Trim()
Dim value1 As String = ary(1).Trim()
Dim R As String
Dim G As String
Dim B As String
Dim outline As String
Dim outlineColor As String
R = Chr(34) & "MouseColorR" & Chr(34)
G = Chr(34) & "MouseColorG" & Chr(34)
B = Chr(34) & "MouseColorB" & Chr(34)
outline = Chr(34) & "ThickMouseEdges" & Chr(34)
outlineColor = Chr(34) & "ThickMouseEdgesPackedColor" & Chr(34)
'based on the value after the equals sign, do something
If value = R Then
MsgBox(ary(1).Trim(Chr(44)))
ElseIf value = G Then
MsgBox("finally")
ElseIf value = B Then
MsgBox("finally")
ElseIf value = outline Then
MsgBox("finally")
ElseIf value = outlineColor Then
MsgBox("finally")
End If
Next
End Sub
End Class您正在访问一个容器,该容器在位置0处工作,然后在位置1处不工作。屏幕截图中显示的异常表示这是一个超出范围的问题。因此,您的容器没有预期的大:它只有1个元素。您正在通过Dim ary以String=line的形式填充ary。拆分:。您正在阅读C:\Users\Matthew\Documents\My Games\Terraria\config.json中的每一行 该文件的一行不包含:。因此,拆分只创建一个元素数组。当你打电话时:
Dim value1 As String = ary(1).Trim()
由于元素1不存在,您将获得ArgumentOutOfRangeException
解决方案是测试数组长度,让代码以优雅的方式处理不带:的行。请以代码的形式发布一个简短但完整的示例。这里没有理由使用图像。很容易解释:你将代码粘贴到你的问题中,说你正在获取ArgumentOutOfRangeException,并说它发生在哪一行。这仍然不是一个简短但完整的示例。它既不短也不完整,也没有告诉我们您要拆分哪个值。还不清楚为什么在没有C的情况下用C标记此变量。请阅读您的ary变量仅包含元素0,而不包含元素1。因此,您粘贴的代码不是问题的原因;它发生得更早,假设您甚至需要value1,不管它是什么;请在你的代码中使用有意义的变量名,因为到目前为止,你不会在你发布的内容中使用它。现在我所有的代码都有了…如果value=R,那么MsgBoxary1.TrimChr44 end如果value不等于R的情况如何?R、G、B都是我关心的。。其他什么都不重要。。此外,除变量外,所有3个变量的代码都是相同的。后一个代码有效,因为只有当value=R时才测试ary1。前一个代码失败,因为即使在value不等于R的情况下也可以访问ary1。因此,如果我想在不删除这些括号的情况下修复此问题。。我该怎么做?编辑:Nvm我知道如何。。只需在Try函数中声明它
Dim value1 As String = ary(1).Trim()