嘿伙计们在阅读我程序的config.cfg文件时遇到问题。我可以读取该文件的23.字符,但我无法读取24. char(文件中的最后一个字符)。
这是代码:
Dim CFGReader2 As System.IO.StreamReader
CFGReader2 = _
My.Computer.FileSystem.OpenTextFileReader(CurDir() & "\Config.cfg")
Dim Server(2) As String
Server(0) = CFGReader2.ReadToEnd.Chars(23)//This part works
If Server(0) = 0 Then
Server(1) = CFGReader2.ReadToEnd.Chars(24)//This part results in "Index was outside the bounds of the array".
ElseIf Server(0) = 1 Then
Server(2) = CFGReader2.ReadToEnd.Chars(24)//This part results in "Index was outside the bounds of the array".
Server(1) = 10 + Server(2)
ElseIf Server(0) = 2 Then
Server(2) = CFGReader2.ReadToEnd.Chars(24)//This part results in "Index was outside the bounds of the array".
Server(1) = 20 + Server(2)
ElseIf Server(0) = 3 Then
Server(2) = CFGReader2.ReadToEnd.Chars(24)//This part results in "Index was outside the bounds of the array".
Server(1) = 30 + Server(2)
End If
这是文件:
语言= 2
服务器= 11
感谢您的回答!
雾
答案 0 :(得分:3)
数组的编号从0开始。因此,24个字符将是数组索引0到数组索引23。
修改的
让我解释一下。
如你所知, System.IO.StreamReader.ReadToEnd
返回一个String类型。
String.Chars()
允许您以数组形式访问sring,索引库为0。
因此在您的代码中:
CfgReader.ReadToEnd.Chars(23)
是因为它访问最后一个字符,即字符串中的第24个字符。
CfgReader.ReadToEnd.Chars(24)
不起作用,因为它试图访问字符串中不存在的第25个字符。
例如:
如果一个字符串包含以下字符:“abcdef”它的长度为6,因为它包含6个字符,但“a”位于0位置,b位于位置1。 所以
Dim testString As String
Set testString = "abcdef"
Dim testChar As Char
testChar = testString.Chars(0) // testChar = a
testChar = testString.Chars(5) // testChar = f
testChar = testString.Chars(6) // will throw an exception as we are accessing a position beyond the end of the string.
我希望能够解释它。 如果我的VB语法不是我经常使用的语言,我会道歉。
答案 1 :(得分:0)
以下是我为那些可能会有同样想法的人解决的问题:
Dim CFGReader(2) As System.IO.StreamReader
CFGReader(0) = My.Computer.FileSystem.OpenTextFileReader(CurDir() & "\Config.cfg")
Dim Server(2) As String
Server(0) = CFGReader(0).ReadToEnd.Chars(24)
CFGReader(1) = My.Computer.FileSystem.OpenTextFileReader(CurDir() & "\Config.cfg")
Server(1) = CFGReader(1).ReadToEnd.Chars(23)
Server(2) = Server(1) + Server(0)
MsgBox(Server(2)) // This is just to test it.
现在它完美无缺。我会在一天左右后告诉你结果。
P.S。对于您想要从文件中读取的每个字符,您必须创建一个新的读者。