Отображение всех, кроме последней строки в текстовом файле

Я создал эту игру для 2 игроков под названием Go и сделал так, чтобы статистика из игры записывалась в текстовом файле. Если одни и те же 2 игрока играют друг с другом более одного раза, их игра будет записана в том же текстовом файле на следующей строке.

Я сделал все это, но теперь я хочу, чтобы предыдущие игры отображались на экране, чтобы игроки могли видеть результаты предыдущих матчей. Я не хочу, чтобы отображалась последняя строка, так как это результат только что законченной игры. Вот мой код до сих пор:

 Dim file As System.IO.StreamWriter
    'Imports the data from previous forms to form 3
    handikomi = Form1.handi_komi
    prisonerB = Form2.prisonerB
    prisonerW = Form2.prisonerW
    bpass = Form2.bpass
    wpass = Form2.wpass
    bstones = Form2.bstones
    wstones = Form2.wstones
    btotalscore = prisonerB + handikomi(0, 2)
    wtotalscore = prisonerW + handikomi(1, 2)

    If btotalscore > wtotalscore Then
        winnerlbl.Text = (handikomi(0, 0) & " IS THE WINNER!")
    ElseIf wtotalscore > btotalscore Then
        winnerlbl.Text = (handikomi(1, 0) & " IS THE WINNER!")
    End If

    file = My.Computer.FileSystem.OpenTextFileWriter("F:\My Go project flood fill2\Text files\" & handikomi(0, 0) & " VS " & handikomi(1, 0) & ".txt", True)
    'Displays statistics from current match
    file.WriteLine("BLACK" & "," & "WHITE" & "," & "Total Score" & "," & btotalscore & "," & wtotalscore & "," & "Prisoners" & "," & prisonerB & "," & prisonerW & "," & "Passes" & "," & bpass & "," & wpass & "," & "Stones" & "," & bstones & "," & wstones)
    file.Close()

    breakdwnlbl.Text = "                    BLACK   WHITE"
    breakdwnlbl.Text = (breakdwnlbl.Text & vbNewLine & "Total Score" & "     " & btotalscore & "          " & wtotalscore)
    breakdwnlbl.Text = (breakdwnlbl.Text & vbNewLine & "Prisoners" & "         " & prisonerB & "          " & prisonerW)
    breakdwnlbl.Text = (breakdwnlbl.Text & vbNewLine & "Passes" & "             " & bpass & "          " & wpass)
    breakdwnlbl.Text = (breakdwnlbl.Text & vbNewLine & "Stones" & "              " & bstones & "          " & wstones)


    Dim data As String       'to hold value of file line 
    Dim filename As String   'declare file
    filename = "F:\My Go project flood fill2\Text files\" & handikomi(0, 0) & " VS " & handikomi(1, 0) & ".txt"  'path to file on system

    FileOpen(1, filename, OpenMode.Input)  'open file for reading
    'try amend
    Do While Not EOF(1)
        data = LineInput(1)
        MsgBox(data)
    Loop

Я думаю, что я не должен использовать EOF для этого случая, но я не знаю, что еще использовать, так как я все еще начинающий. Я ценю любую помощь!

1 ответ

Решение

Разве не было бы легче прочитать все строки и просто пропустить последнюю:

Dim allLines() As String = File.ReadAllLines(filename)
Dim allButLast = allLines.Take(allLines.Length - 1)

Переменная allButLast является IEnumerable(Of String) содержит все строки файла, кроме последней.

Обновить:

Вот пример, чтобы показать каждую строку в MessageBox:

For Each line As String In allButLast
    MessageBox.Show(line)
Next
Другие вопросы по тегам