Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 visualbasic分割函数_Visual Studio 2010_Visual Studio_Data Structures_Split - Fatal编程技术网

Visual studio 2010 visualbasic分割函数

Visual studio 2010 visualbasic分割函数,visual-studio-2010,visual-studio,data-structures,split,Visual Studio 2010,Visual Studio,Data Structures,Split,好的,现在我没有得到一个错误,但是列表框中的所有内容只包含.txt文件中的第一行文本,而不是所有内容。这是我也修改过的代码: Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim inFile As IO.StreamReader If IO.File.Exists("StudentList.txt") = True Then inFile = IO.F

好的,现在我没有得到一个错误,但是列表框中的所有内容只包含.txt文件中的第一行文本,而不是所有内容。这是我也修改过的代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim inFile As IO.StreamReader

    If IO.File.Exists("StudentList.txt") = True Then
        inFile = IO.File.OpenText("StudentList.txt")
        For index As Integer = 0 To inFile.Peek = -1
            Dim splits = inFile.ReadLine.Split(","c)
            Member(index).ID = splits(0)
            Member(index).lastName = splits(1)
            Member(index).firstName = splits(2)
            Member(index).middleName = splits(3)
            Member(index).grade = splits(4)
            Member(index).period = splits(5)

            ListBox1.Items.Add(Member(index).ID.PadLeft(10) & " " & Member(index).lastName & " " & Member(index).firstName)

        Next
        inFile.Close()
    Else
        MessageBox.Show("error", "error", MessageBoxButtons.OK)
    End If

End Sub

问题是您试图将字符串数组分配给
成员
。也就是说,你有:

Member(index) = infile.ReadLine.Split(",", c);
您需要分配每个字段:

Dim splits = infile.ReadLine.Split(",", c);

Member(index).ID = splits(0);
Member(index).lastName = splits(1);
... etc.
操作编辑后更新 我怀疑现在的问题是您的
For
循环只执行了一次,或者
index
没有递增。我不知道你是从哪里想出这个古怪的
infle.Peek=-1
东西的,但我怀疑它没有像你想象的那样工作。用一些更传统的方法,像这样

Dim index As Integer = 0
For Each line As String In File.ReadLines("StudentList.txt")
    Dim splits = line.Split(",", c)
    Member(index).ID = splits(0)
    ' etc.
    ListBox1.Add(...)
    Index = Index + 1
Next

Split()几乎总是一种处理csv数据的可怕方式。您的异常For语句会给您带来麻烦。不可避免的是,你忘了增加指数。@Hans,这有什么不寻常的?即使在“下一步”之后添加了索引,结果仍然是一样的,所以我更改了代码,仍然得到一个错误。@DarkBlue:编辑您的问题,告诉我们您得到了什么错误。复制准确的错误消息,并告诉我们您在哪一行得到错误。说“文件未声明”我是否应该将其声明为字符串?@DarkBlue:“文件未声明”可能不是完整的错误消息。尝试
System.IO.File.ReadLines
。还可以在语句中查找Visual Basic。正如在
中导入System.IO
,这将在将来为您节省一点输入。