Imports System.IO  ' namesraum für dateizugriffe
Module modDateiBeste
    Public Const strORDNERNAME As String = "C:\kp_spiele"                        '--------- Anpassen
    Public Const strDATEIBESTESPIELER As String = "C:\kp_spiele\bs_summe.bst"    '--------- Anpassen

    Public Sub LeseDatenBesterSpieler()
        '--------------- ordner anlegen, falls dieser nicht existiert
        If Not IO.Directory.Exists(strORDNERNAME) Then
            IO.Directory.CreateDirectory(strORDNERNAME)     '---- neuen ordner anlegen
            ErzeugeNeueDateiBesteSpieler()                  '--- neue datei für beste spieler anlegen
        End If
        If Not IO.File.Exists(strDATEIBESTESPIELER) Then
            ErzeugeNeueDateiBesteSpieler()                 '--- neue datei für beste spieler anlegen
        End If
        '--- Daten aus Datei einlesen
        Dim i As Integer
        Dim strZeile As String
        With frmBesteSpieler
            .lstNamen.Items.Clear() : .lstPunkte.Items.Clear()
            Try
                Dim fs As New FileStream(strDATEIBESTESPIELER, FileMode.Open, FileAccess.Read)
                Dim sr As New StreamReader(fs)
                Do Until sr.Peek() = -1
                    strZeile = sr.ReadLine()
                    If i <= 4 Then
                        .lstNamen.Items.Add(strZeile)
                    Else
                        .lstPunkte.Items.Add(strZeile)
                    End If
                    i += 1
                Loop
                sr.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End With
        WertAusListe()
        With frmBesteSpieler.lstPunkte
            Try
                intKeinsterWert = Convert.ToInt32(.Items(.Items.Count - 1))
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End With
    End Sub
    Public Sub WertAusListe()
        With frmBesteSpieler
            Dim strWert As String
            Try
                strWert = .lstPunkte.Items(.lstPunkte.Items.Count - 1)
                intKeinsterWert = Convert.ToInt32(strWert)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End With
    End Sub
    Public Sub ErzeugeNeueDateiBesteSpieler()
        Dim strDaten(9) As String
        strDaten(0) = "Adam" : strDaten(1) = "Beate" : strDaten(2) = "Christian"
        strDaten(3) = "Doris" : strDaten(4) = "Eckhardt"
        '-------------  Werte anpassen
        strDaten(5) = "100" : strDaten(6) = "80" : strDaten(7) = "60"
        strDaten(8) = "40" : strDaten(9) = "20"
        Try
            Dim fs As New FileStream(strDATEIBESTESPIELER, FileMode.Create,
                                 FileAccess.Write, FileShare.None)
            Dim sw As New StreamWriter(fs)
            Dim i As Integer
            For i = 0 To 9
                sw.WriteLine(strDaten(i))
            Next
            sw.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Public Sub SpeichereDatenBesteSpieler()         '--  speichern nach klick auf OK
        With frmBesteSpieler                        '-- in frmBesteSpieler
            .lstPunkte.Items.Clear()                '-- listen mit den aktuellen daten füllen
            .lstNamen.Items.Clear()
            Dim i As Integer
            For i = 0 To 4
                .lstPunkte.Items.Add(BesteWerte(i).Text)
                If NameSpieler(i).Text = "" Then     '-- falls das textfeld leer ist
                    NameSpieler(i).Text = "Spieler"
                End If
                .lstNamen.Items.Add(NameSpieler(i).Text)
            Next
            '---- Filemode.Create überschreibt den vorhandenen dateinhalt
            Try
                Dim fs As New FileStream(strDATEIBESTESPIELER, FileMode.Create)
                Dim sw As New StreamWriter(fs)
                '--  zeilenweise ib datei schreiben
                For i = 0 To 4
                    sw.WriteLine(.lstNamen.Items(i))
                Next
                For i = 0 To 4
                    sw.WriteLine(.lstPunkte.Items(i))
                Next
                sw.Close()
            Catch ex As Exception
                MessageBox.Show("Das Speichern der aktuellen Daten ist fehlgeschlagen.",
                                "Beste Spieler", MessageBoxButtons.OK, MessageBoxIcon.Error)
                ErzeugeNeueDateiBesteSpieler()
                LeseDatenBesterSpieler()
            End Try
        End With
    End Sub
End Module
