Eine kleine Aufgabe erfordert, dass ich eine Textdatei durchliest und diese Objekte in ein Objekt lege, das ich zu einer ArrayList hinzufüge. Allerdings fällt es mir schwer, den Code korrekt zu machen. In der Textdatei sind die Einträge in Gruppen von 5 durch eine Leerzeile getrennt. Meine Logik scheint nicht richtig zu funktionieren und deshalb suche ich weitere Hilfe. Beigefügt ist ein Screenshot der Textdatei, gefolgt von meinem CodeLesen in Textdateien und Eingeben von Objekten in Klassenobjekte
Public Class BrowseReservations
Private objectStore As ArrayList = New ArrayList()
Private Shared basePath As String = My.Application.Info.DirectoryPath
Private Shared filePath As String = Path.Combine(basePath, "reservations.txt")
Private Sub populateList()
Dim counter As Integer = 0
objectStore.Clear()
Dim rc As ReservationRecord = New ReservationRecord()
Dim AllLines As String() = File.ReadAllLines(filePath)
For i As Integer = 0 To AllLines.Count() - 1
If counter = 0 Then
rc.setfullDate(AllLines(i))
ElseIf counter = 1 Then
rc.setmonthName(AllLines(i))
ElseIf counter = 2 Then
rc.sethoursChartered(Convert.ToInt32(AllLines(i)))
ElseIf counter = 3 Then
rc.setyatchName(AllLines(i))
ElseIf counter = 4 Then
rc.setyatchLength(Convert.ToInt32(AllLines(i)))
ElseIf counter = 5 Then
rc.settotalCost(AllLines(i))
objectStore.Add(rc)
ElseIf counter = 6 Then 'This is the empty space between groups
counter = -1
End If
counter += 1
Next
End Sub
End Class
Hier ist, wie die Textdatei aussieht nur für den Fall des Bild erscheinen tut.
04/09/2017 12:18:30
April
Catalina
$ 1235
04/09/2017 12:34:19
April
Hans Christin
$ 800
04/09/2017 12:34:33
April
Hobie
$ 7296
Anstatt jede Gruppe richtig zu ernähren, wird nur die letzte Gruppe wird in dem Objekt zugeführt. Ein Teil des Inhalts geht verloren, zB Catalina (Strings im 4. Item jeder Gruppe). Mit freundlicher
helfen
'Dim rc Wie ReservationRecord = New ReservationRecord()' - Sie mehrere Instanzen von 'ReservationRecord' müssen alle von ihnen zu speichern, so dass Sie wissen. –
Um zu erweitern, was ich gesagt habe, behalten Sie eine 'List (Of ReservationRecord)' und haben einen Zähler pro Gruppe, so dass jedes Mal, wenn es die Leerzeile trifft, der Zähler hinzugefügt wird. Erstellen Sie dann auf der ersten (0) einen neuen Datensatz und fügen Sie ihn zu Ihrer Liste hinzu. Dann ändern Sie es kontinuierlich bis 6. –
Und was könnte den Verlust einiger Informationen wie Strings verursachen? –