Listbox mir Array füllen (nur bestimmte "Zeilen")

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von LJ Jojo.

    Listbox mir Array füllen (nur bestimmte "Zeilen")

    Moin,

    ich hab hier eine Listbox und ein String-Array (List1()). Nun möchte ich die Listbox1 mit den Werten von (inklusive) 5 bis inklusive dem vorletzen von List1 füllen. Ich habe das so probiert:

    VB.NET-Quellcode

    1. Dim List1() As String = System.IO.File.ReadAllLines(ofd.FileName)'ofd = Openfiledialog
    2. Zeilen = List1.Length
    3. ToolStripProgressBar1.Maximum = Zeilen - 7
    4. For i = 5 To Zeilen - 2
    5. ToolStripProgressBar1.PerformStep()
    6. ListBox1.Items.Add(List1.GetValue(i))
    7. Next


    Zeilen ist zur Zeit was zwischen 30 und 40 wird aber später auch deutlich über 100 sein.

    VB2010 zeigt da auch kein Fehler an, aber das Programm hängt sich genau da auf. (Hab ich mit Message Boxen rausgefunden :) )

    Wie kann ich das anderst lösen??

    Danke
    Jojo
    Also ich kann den Fehler leider nicht reproduzieren. Ich hab einmal eine Datei mit 9 Zeilen und einmal eine Datei mit 160 Zeilen probiert. Wie genau lang ist Deine Datei?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du solltest die Variable Zeilen vor der For-Schleife prüfen. Wenn (Zeilen - 2) < 5, dann zählt sich die Schleife bis zum SankNimmerleinstag...
    Obwohl denn ListBox1.Items.Add(List1.GetValue(i)) eine OutOfRangeException schmeißen würde.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Moin @Vatter: und Oppa,
    die Progressbar ist bei diesem Code schneller:
    Bilder
    • Maximum.jpg

      13,9 kB, 486×88, 147 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @rotherford:
    :?:
    Bilder
    • hä.jpg

      9,37 kB, 533×37, 219 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also hier ist mein Quelltext:

    VB.NET-Quellcode

    1. Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
    2. ListBox1 = Nothing
    3. Dim ofd As New OpenFileDialog
    4. ofd.InitialDirectory = Directory.GetCurrentDirectory()
    5. ofd.Filter = "Voice of Code Dateien (*.jojo) | *.jojo"
    6. ofd.Title = "Datei zum Öffnen auswählen"
    7. If ofd.ShowDialog() = DialogResult.OK Then
    8. 'MessageBox.Show("Öffnen: " & ofd.FileName)
    9. Else
    10. 'MessageBox.Show("Abbruch")
    11. End If
    12. Dim fs As FileStream
    13. Dim sr As StreamReader
    14. Dim dateiname As String = ofd.FileName
    15. If Not File.Exists(dateiname) Then
    16. 'MessageBox.Show("Datei " & dateiname & " existiert nicht")
    17. Exit Sub
    18. End If
    19. fs = New FileStream(dateiname, FileMode.Open)
    20. sr = New StreamReader(fs)
    21. sr.ReadLine() '<head>
    22. Länge = sr.ReadLine 'trans
    23. 'trans = CInt(Lang)
    24. Länge = sr.ReadLine 'Länge
    25. MessageBox.Show("trans: " & trans & vbCrLf & "Länge: " & Länge)
    26. ListBox1 = Nothing
    27. sr.Close()
    28. Dim Zeilen As Integer = 0
    29. ToolStripProgressBar1.Visible = True
    30. Dim List1() As String = System.IO.File.ReadAllLines(ofd.FileName)
    31. MessageBox.Show("Die Datei " & ofd.FileName & " wurde korrekt geöffnet") 'DATEI WIRD AB HIER NICHT MEHR GEBRAUCHT!
    32. Zeilen = List1.Length
    33. MessageBox.Show("Zeilen: " & Zeilen)
    34. ToolStripProgressBar1.Maximum = Zeilen - 7
    35. For i = 5 To Zeilen - 2
    36. ToolStripProgressBar1.PerformStep()
    37. ListBox1.Items.Add(List1.GetValue(i)) '=====HIER HÄNGT DAS PROGRAMM, ohne der Zeile läufts durch=====
    38. Next
    39. MessageBox.Show("Die Datei wurde erfolgreich verarbeitet.")
    40. ToolStripProgressBar1.Visible = False
    41. End Sub


    Die Datei zum lesen hab ich mal angehängt. Man müsste aber die Endung wieder auf ".jojo" setzten um sie mit dem text lesen zu können. Letztendlich wird dann über

    VB.NET-Quellcode

    1. Console.beep(Frequenz, Zeit)
    abgespielt^^
    Muss sich nicht gut anhören. Ich weiß..... das geht alles viel schöner etc. aber ich will sie nur öffnen. der rest sollte funktionieren.
    Und die Dateien müssen auch genau so aufgebaut bleiben, da ich ein etwas größeres Programm zum erstellen geschrieben hab. :)
    Dateien
    • vb-paradise.txt

      (2,19 kB, 134 mal heruntergeladen, zuletzt: )