Arraylist auslesen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Toolmaster.

    Arraylist auslesen

    Hallo,
    ich habe ein Problem mit einem Arraylist. Füllen tue ich es so

    VB.NET-Quellcode

    1. Dim DT As ArrayList
    2. Public Function Search_Save()
    3. DT = New ArrayList
    4. If Directory.Exists("SaveIcons") Then
    5. Dim sFile As String
    6. Dim sPath As String
    7. sPath = Application.StartupPath & "\SaveIcons\"
    8. For Each sFile In My.Computer.FileSystem.GetFiles(sPath, FileIO.SearchOption.SearchTopLevelOnly, "*.xml")
    9. Try
    10. Dim po As XElement = XElement.Load(sFile)
    11. Dim Re As XElement = po.Element("Information")
    12. DT.Add({Re.Attribute("Datum").Value, Re.Attribute("Auflösung").Value, Re.Attribute("Monitore").Value, Re.Attribute("Benutzer").Value, sFile, Re.Attribute("Icons").Value})
    13. Catch
    14. End Try
    15. Next
    16. End If
    17. Return DT
    18. End Function


    Mit Return übergebe ich die Arraylist und möchte sie nun folgendermaßen mit for each auslesen.

    VB.NET-Quellcode

    1. For each.........
    2. msgbox(... (0), ..(1).... usw.)
    3. next


    nur leider komme ich auch nach stundenlangem Googlen auf keinen Grünen Zweig.

    Bitte nicht die Aussage das ich ein DataTable verwenden soll, denn diesw dient nur der Anzeige und sonst nichts.

    Hoffe auf eure Hilfe.
    zeig mal dein wirklichen Code.
    Du hast ja wohl nicht

    VB.NET-Quellcode

    1. For each.........
    2. msgbox(... (0), ..(1).... usw.)
    3. next
    da stehen.

    Weiters sollte das Ergebnis dieses Threads sein, dass du von ArrayList weg kommst - die ist nämlich Grütze.
    Stattdessen List(Of String()) verwenden - die hat klar typisierte Elemente (nämlich String())
    Oder aber, das Zeug in ne DataTable schreiben. Weil die hat Zeilen und Spalten...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ne, warum?

    Edit: Oder aber, du schreibst ne Klasse "MeineKlasse" mit den Eigenschaften Monitor, Datum, Auflösung und so. Diese hat einen Konstruktor, welcher aus dem Datei String das XElement erzeugt und die Eigenschaften deines Objekts füllt.

    Hierhin kannst du dann eine List(Of MeineKlasse) erzeugen.


    Am ende sieht das so aus'

    VB.NET-Quellcode

    1. Dim lst As New List(Of MeineKlasse)
    2. For Each sFile In My.Computer.FileSystem.GetFiles(sPath, FileIO.SearchOption.SearchTopLevelOnly, "*.xml")
    3. lst.Add(New MeineKlasse(sFile))
    4. Next

    So, oder so ähnlich, hab's nicht getestet.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „mrMo“ ()

    Toolmaster schrieb:

    List(Of String()) hat aber keine Spallten oder?
    ArrayList ja wohl erst recht nicht.

    Und List(Of String()) hat sehr wohl etwas Spalten vergleichbares:
    Weil jedes Element einer List(Of String()) ist ja ein String-Array (String() halt).
    Und ist kein Problem nu, die Elemente des String-Arrays als Spalte-Eintrag aufzufassen.



    Toolmaster schrieb:

    Zum auslesen ...

    VB.NET-Quellcode

    1. Private Sub test()
    2. Dim stringsList As New List(Of String())
    3. For i = 0 To 15
    4. stringsList.Add({"col1_" & i, "col2_" & i, "col3_" & i})
    5. Next
    6. Auslesen(stringsList)
    7. End Sub
    8. Private Sub Auslesen(lst As List(Of String()))
    9. For Each stringArray In lst
    10. MessageBox.Show(stringArray(0))
    11. MessageBox.Show(stringArray(1))
    12. MessageBox.Show(stringArray(2))
    13. Next
    14. End Sub

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Danke für eure Antworten abe ich habe es so gelöst:

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    2. DataGridView1.Rows.Clear()
    3. Dim Backup_List As ArrayList = Backups_Return.Search_Save
    4. If Backup_List.Count > 0 Then
    5. For Save_Backups = 0 To Backup_List.Count - 1
    6. Dim Ausgelesene_Zeile As Array = Backup_List.Item(Save_Backups)
    7. DataGridView1.Rows.Add(Ausgelesene_Zeile(0), Ausgelesene_Zeile(1), Ausgelesene_Zeile(2), Ausgelesene_Zeile(3), Ausgelesene_Zeile(4), Ausgelesene_Zeile(5))
    8. Next
    9. End If
    10. End Sub


    Was man nicht kann und nicht findet muss man einfach Testen. :)
    Vieleicht hilft es ja mal wem.