2015-04-17 46 views
0

我有点新手,所以任何建议都会很棒。我有一个程序 ,它会打开一个CSV文件,然后将其另存为具有不同名称的csv。将有一套规则来改变领域,但还没有那么远。语法超出范围未处理

当我在一个小的csv文件(约4列和行)上运行它时,它工作正常,但对于较大的文件,它会失败,并显示上述错误。我敢肯定它的东西笨拙,但我不知所措。

感谢,

院长

Dim FileName = tbOpen.Text 
    Dim fileout = tbSave.Text 
    Dim lines = File.ReadAllLines(FileName) 
    Dim output As New List(Of String) 

    For Each line In lines 
     Dim fields = line.Split(","c) 

     If fields(1) = "" Then  'This is where the error is triggered 
      fields(1) = "Norman" 
     End If 
     If fields(3) = "" Then 
      fields(3) = "Blue Leather" 
     End If 
     If fields(4) = "" Then 
      fields(3) = "Interlined" 
     End If 

     output.Add(String.Join(","c, fields)) 
    Next 
    File.WriteAllLines(fileout, output) 


    Try 

     Dim a As String = My.Computer.FileSystem.ReadAllText(tbSave.Text) 
     Dim b As String() = a.Split(vbNewLine) 
     ListBox2.Items.AddRange(b) 
    Catch ex As Exception 

     MsgBox("error") 

    End Try 
+1

你真的应该使用[Option Strict and Option Explicit](https://support.microsoft.com/en-us/kb/311329)。 – Eminem

+7

_“语法超出范围”_大声笑,这真的很好^^ –

+0

你有没有在调试模式下运行一些断点?你能指出错误发生在哪一行? – Nanhydrin

回答

0

请记住,数组开始索引0 VB是臭名昭著的拉伸这个概念。通常情况下,当你声明一个包含10个元素的数组时,索引将会从0到9。另一方面,使用VB,索引将会从0到10,这实际上会给你11个元素。