Hallo,
ich möchte mit vb.net eine Textdatei unbekannter länge zeilenweise einlesen und dann in ein Array schreiben. Bei den Daten handelt es sich um Adressen und sieht etwa fogendermaßen aus:
Max Mustermann Berlin
Gabriele Müller Hamburg
…
anschließend sollten diese Daten einzel in Textfeldern ausgeben werden.
D.H
textbox1.text = Max
textbox2.text = Mustermann
…
Ist es da besser ein ein- oder zweidimensionales Array zu verwenden?
Bisher habe ich folgen stand:
Dim zeilen() As String
dim anzahl as integer
Do While sr.Peek -1
zeilen.Add(sr.ReadLine)
zeilen(anzahl) = leerzeichen(zeilen(anzahl))
anzahl = anzahl + 1
Loop
Ich habe hier das Problem, dass die Funktion zeilen.Add unbekannt ist und nicht funktioniert.
Bin schon mal dankbar für eure Hilfe.
Willst du wirklich ein Array nehmen?
Günstiger ist vielleicht eine generische Liste (List (Of T)).
Da hätten wir dann auch das Problem mit eindimensional und zweidimensional gelöst. Erstelle einen neuen Datentyp für deine Daten:
Structure meineDaten
Dim Vorname As String
Dim Nachname As String
Dim adresse As String
End Structure
Dim Zeilen As New List(Of meineDaten)
Dim AktuelleZeile As String
Dim Teile As String()
Do While sr.Peek -1
AktuelleZeile = sr.ReadLine()
Teile = AktuelleZeile.Split(" ")
Zeilen.Add(New meineDaten With {.Vorname = Teile(0), .Nachname = Teile(1), .adresse = Teile(2)})
Loop
Ich würde dir aber empfehlen, die Daten ordentlich zu speichern - also nicht mit Leerzeichen getrennt einfach hintereinander. Es sei denn, du kannst in jedem Fall sicherstellen, dass die Teile keine Leerzeichen enthalten (Doppelnamen etc.). Anbieten würde sich bspw. eine XML-Datei.
Nico
Danke,
hat mir schon mal ein Stück weiter geholfen
ist das auch möglich, wenn die einzelnen Elemente unterschiedliche Datentypen sind. D.h. wenn ich jetzt noch ein Element mit Alter (Interger) hinzufüge?
Ja, dazu musst du einfach eine Überklasse anlegen, die alle Gemeinsamkeiten festhält und dann je nachdem in Unterklassen weitere Details festlegen. Wie gesagt - Klassen. Mit Strukturen geht das nicht. Ist aber auch sehr ähnlich:
Class GrundDaten
Public Name As String
End Class
Class DatenMitVorname : Inherits GrundDaten
Public Vorname As String
End Class
Sub Main()
Dim Daten As New List(Of GrundDaten)
Daten.Add(New GrundDaten With {.Name = "Ein Name"})
Daten.Add(New DatenMitVorname With {.Name = "Noch ein Name", .Vorname = "ein Vorname"})
End Sub
Nico