Dateien in listbox

  • VB.NET

Es gibt 35 Antworten in diesem Thema. Der letzte Beitrag () ist von toto.

    Dateien in listbox

    Hallo zusammen,
    würde nur gerne wissen was an diesem Code falsch ist:

    VB.NET-Quellcode

    1. Private Sub lboAudio_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles lboAudio.GotFocus
    2. For Each dateien As String In My.Computer.FileSystem.GetFiles("C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & txtSong_Info.Text & ".mp3")
    3. dateien = dateien.Replace("C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & txtSong_Info.Text & ".mp3", Nothing)
    4. lboAudio.Items.Add(dateien)
    5. Next


    bekomme immer die meldung : konnte nicht gefunden werden.

    vielen Dank im Voraus

    lg

    toto
    lg toto

    toto schrieb:

    würde nur gerne wissen was an diesem Code falsch ist:

    Fast alles?

    ...GetFiles erwartet als Parameter ein String, der ein DIRECTORY bezeichnet. Bei dir ist es ne Datei.
    ...Replace erwartet 2 Strings, du übergibst aber nen String und [nothing]. [nothing] ist kein String

    Vlt solltest du erstmal erklären, WAS du überhaupt bezwecken willst?
    habe es mit beide probiert.


    UFO mit deinem Code bekomme ich eine Fehlermeldung im Bereich : IO.SearchOption.TopDirectoryOnly.

    picoflop, habe dein Code so eingebaut:

    VB.NET-Quellcode

    1. Dim Path As String
    2. Path = "C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & cboSong.Text & "*.mp3"
    3. frm.lboAudio.Items.Add(cboSong.Text & "*.mp3")




    Funzt super.

    Danke an euch beide.

    lg

    toto

    Visual Basic-Quellcode

    lg toto
    Sorry ich muss das Thema wieder aufgreifen.

    Das was ich gemacht habe ist kompletter Unsinn, hätt ich gleich den Code von picoflop nehmen können.

    Also ich habe ein Song mit viele verschiedenen Endung:

    Autumn Leaves.mp3
    Autumn Leaves.midi
    Autumn Leaves.gp3
    Autumn Leaves.tef
    usw.

    Das habe ich gemeint, sorry mein Fehler, wenn ich ein Song in CBO wähle sollen mir
    in LBO alle Variationen des Sogs aufgelistet werden.
    Und es macht kein Sinn mit:

    .....bla, bla" & cboSong.Text & ".mp3, .tef, .mgu, .gp3"
    weil die Antwort ist:
    Autumn Leaves.mp3, .tef, .mgu, .gp3

    Vielleicht habe es jetzt besser geschilder4t.

    lg

    toto
    lg toto
    Nein, hast du nicht.

    Außerdem gibt es bestimmt keine Datei mit folgendem Namen:

    Quellcode

    1. C:\Lala\Autumn Leaves.mp3, .tef, .mgu, .gp3


    Sondern eher

    Quellcode

    1. C:\Lala\Autumn Leaves.mp3
    2. C:\Lala\Autumn Leaves.tef
    3. C:\Lala\Autumn Leaves.mgu
    4. C:\Lala\Autumn Leaves.gp3
    Versuche es so zu lösen:

    VB.NET-Quellcode

    1. Dim ordner As String = "C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & cboSong.Text & "*.*"
    2. For Each datei As String In System.IO.Directory.GetFiles(ordner)
    3. If datei Like cboSong.Text Then
    4. frm.lboAudio.Items.Add(datei)
    5. End If
    6. Next


    Kommt aber die Meldung : Illegales Zeichen im Pfad.
    Ist evtl. "*.*" ??
    Wie kann ich abfragen nach alle Dateiendungen?

    Für ein wenig Hilfe wäre ich dankbar.

    lg

    toto
    lg toto
    Eine weitere Möglichkeit ...
    Funktion

    VB.NET-Quellcode

    1. Private Sub ListFilesInComboBox(ByVal ordner As String, _
    2. ByVal cbo As ComboBox, _
    3. ByVal suchOption As IO.SearchOption, _
    4. ByVal ParamArray dateiEndungen() As String)
    5. ' Prüfen, ob "ordner" angegeben wurde
    6. If String.IsNullOrEmpty(ordner) Then Throw New ArgumentNullException("Verzeichnis")
    7. Dim locDirInfo As New IO.DirectoryInfo(ordner)
    8. ' Prüfen auf Existenz des "ordner"s
    9. If Not locDirInfo.Exists Then Throw New IO.DirectoryNotFoundException
    10. Try
    11. cbo.BeginUpdate() ' ComboBox auf UpdateModus setzen
    12. cbo.Items.Clear() ' Vorhandene Einträge löschen
    13. ' Durchläuft alle Dateien des angegebenen "ordner"s
    14. For Each locFileInfo As IO.FileInfo In locDirInfo.GetFiles("*.*", suchOption)
    15. ' Durchläuft die gesuchten Dateiendungen
    16. For Each dateiEndung As String In dateiEndungen
    17. ' Punkt vor Dateiendung hinzufügen, falls nicht angegeben
    18. If Not dateiEndung.StartsWith(".") Then dateiEndung = "." & dateiEndung
    19. ' Vergleich der Dateiendung
    20. If locFileInfo.Extension.ToLower = dateiEndung.ToLower Then
    21. cbo.Items.Add(locFileInfo.FullName) ' Vollständigen Pfad in ComboBox aufnehmen
    22. End If
    23. Next
    24. Next
    25. Catch ex As Exception
    26. Throw ex
    27. Finally
    28. cbo.EndUpdate() ' UpdateModus des ComboBox beenden
    29. locDirInfo = Nothing
    30. If cbo.Items.Count > 0 Then cbo.SelectedIndex = 0 ' Ersten Eintrag auswählen
    31. End Try
    32. End Sub

    Aufrufen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Try
    3. Me.ListFilesInComboBox("D:\Musik", _
    4. ComboBox1, _
    5. IO.SearchOption.AllDirectories, _
    6. "mp3", ".mdi", "ape", ".wav")
    7. Catch ex As Exception
    8. MessageBox.Show(ex.Message)
    9. End Try
    10. End Sub
    Sorry an alle, musste gestern plötzlich weg.

    Hallo UFO,
    habe dein Code so eingesetzt:

    VB.NET-Quellcode

    1. Private Sub cboSong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSong.Click
    2. For Each f As String In IO.Directory.GetFiles("C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\", "Autumn Leaves.*", IO.SearchOption.TopDirectoryOnly)
    3. Form2.lboAudio.Items.Add(My.Computer.FileSystem.GetFileInfo(f).FullName)
    4. Next
    5. End Sub

    Warum Name der Datei, wenn dieser vom CBO übergeben wird

    Leider keine auflistung, LBO bleibt blank.
    Habe was falsch geschrieben???


    Hallo xtts02,

    If String.IsNullOrEmpty(ordner) Then Throw New ArgumentNullException("Verzeichnis")
    Ich nehme an das "Verzeichnis" mein Pfad ist.

    und

    Me.ListFilesInComboBox("D:\Musik"
    "D:\Musik" auch mein Pfad ist.

    habe dein Code so eingesetzt:

    VB.NET-Quellcode

    1. 'Audio Files an Listbox Form 2 übergeben
    2. Private Sub ListFilesInListBox(ByVal ordner As String, _
    3. ByVal lboAudio As ListBox, _
    4. ByVal suchOption As IO.SearchOption, _
    5. ByVal ParamArray dateiEndungen() As String)
    6. ' Prüfen, ob "ordner" angegeben wurde
    7. If String.IsNullOrEmpty(ordner) Then Throw New ArgumentNullException("C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & cboSong.Text)
    8. Dim locDirInfo As New IO.DirectoryInfo(ordner)
    9. ' Prüfen auf Existenz des "ordner"s
    10. If Not locDirInfo.Exists Then Throw New IO.DirectoryNotFoundException
    11. Try
    12. lboAudio.BeginUpdate() ' ComboBox auf UpdateModus setzen
    13. lboAudio.Items.Clear() ' Vorhandene Einträge löschen
    14. ' Durchläuft alle Dateien des angegebenen "ordner"s
    15. For Each locFileInfo As IO.FileInfo In locDirInfo.GetFiles("*.*", suchOption)
    16. ' Durchläuft die gesuchten Dateiendungen
    17. For Each dateiEndung As String In dateiEndungen
    18. ' Punkt vor Dateiendung hinzufügen, falls nicht angegeben
    19. If Not dateiEndung.StartsWith(".") Then dateiEndung = "." & dateiEndung
    20. ' Vergleich der Dateiendung
    21. If locFileInfo.Extension.ToLower = dateiEndung.ToLower Then
    22. lboAudio.Items.Add(locFileInfo.FullName) ' Vollständigen Pfad in ComboBox aufnehmen
    23. End If
    24. Next
    25. Next
    26. Catch ex As Exception
    27. Throw ex
    28. Finally
    29. lboAudio.EndUpdate() ' UpdateModus des ComboBox beenden
    30. locDirInfo = Nothing
    31. If lboAudio.Items.Count > 0 Then lboAudio.SelectedIndex = 0 ' Ersten Eintrag auswählen
    32. End Try
    33. End Sub
    34. Private Sub cboSong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSong.Click
    35. Try
    36. Me.ListFilesInListBox("C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & cboSong.Text, _
    37. Form2.lboAudio, _
    38. IO.SearchOption.AllDirectories, _
    39. "mp3", ".mdi", "ape", ".wav")
    40. Catch ex As Exception
    41. MessageBox.Show(ex.Message)
    42. End Try
    43. End Sub


    Leider auch keine Daten in LBO,
    habe auch hier was falsch geschrieben??

    Danke im Voraus

    lg

    toto
    lg toto
    Ich habe gestern nicht ganz verstanden, was Du vorhast. Daher passt das Beispiel nicht ganz. Das Beispiel von gestern listet nur den vollständigen Pfad aller Dateien der angegebenen Dateiendungen in einen ComboBox auf.
    Ich habe jetzt alle Beiträge in diesem Thread nochmal genauer gelesen. Wenn ich richtig verstanden habe, dann hast Du einen ComboBox und einen ListBox. In dem ComboBox sollen Dateiname stehen. Nach Auswählen einer Datei im ComboxBox sollen in ListBox alle Dateien mit demselben Dateinamen angezeigt werden.
    Ich habe jetzt das Beispiel geändert. Zwei Methoden
    1. ComboBoxFüllen: Durchsucht das angegebene Verzeichnis und listet alle Dateien (ohne Dateiendung) auf. Alle Dateien mit demselben Dateiname werden nur einmal aufgenommen
    2. ListboxFüllen: Suche im angegebenen Verzeichnis nach den angegeben Dateinamen

    VB.NET-Quellcode

    1. Private _Musikordner As String = "D:\Musik"
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Try
    4. Me.ComboBoxFüllen(_Musikordner, ComboBox1, IO.SearchOption.AllDirectories)
    5. Catch ex As Exception
    6. MessageBox.Show(ex.Message)
    7. End Try
    8. End Sub
    9. Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    10. Try
    11. ' _Musikordner = Verzeichnis
    12. ' Listbox1 = Listbox, in dem die gefundenen Dateien angezeigt werden
    13. ' DirectCast(sender, ComboBox).SelectedItem.ToString = In ComboBox1 ausgewählter Dateiname
    14. Me.ListBoxFüllen(_Musikordner, ListBox1, DirectCast(sender, ComboBox).SelectedItem.ToString, IO.SearchOption.AllDirectories)
    15. Catch ex As Exception
    16. MessageBox.Show(ex.Message)
    17. End Try
    18. End Sub
    19. ''' <summary>
    20. ''' Alle Dateien eines Verzeichnisses durch Angabe des Dateinamens in einem ListBox anzeigen
    21. ''' </summary>
    22. ''' <param name="ordner">Verzeichnis</param>
    23. ''' <param name="lstbox">Listbox, in dem die gefundenen Dateien angezeigt werden</param>
    24. ''' <param name="dateiName">Name der gesuchten Dateien</param>
    25. ''' <param name="suchOption">Angabe, ob Unterverzeichnisse durchsucht werden</param>
    26. ''' <remarks></remarks>
    27. Private Sub ListBoxFüllen(ByVal ordner As String, ByVal lstbox As ListBox, ByVal dateiName As String, ByVal suchOption As IO.SearchOption)
    28. ' Ausnahmefehler ausgeben, wenn ordner nicht angegeben ist
    29. If String.IsNullOrEmpty(ordner) Then Throw New ArgumentNullException("Verzeichnis")
    30. Dim locDirInfo As New IO.DirectoryInfo(ordner)
    31. ' Fehler ausgeben, wenn ordner nicht existiert
    32. If Not locDirInfo.Exists Then Throw New IO.DirectoryNotFoundException
    33. Try
    34. lstbox.BeginUpdate()
    35. lstbox.Items.Clear()
    36. For Each locFileInfo As IO.FileInfo In locDirInfo.GetFiles("*" & dateiName & "*", suchOption)
    37. ' Vollständiger Pfad anzeigen (FullName)
    38. lstbox.Items.Add(locFileInfo.FullName)
    39. Next
    40. Catch ex As Exception
    41. Throw ex
    42. Finally
    43. lstbox.EndUpdate()
    44. locDirInfo = Nothing
    45. End Try
    46. End Sub
    47. ''' <summary>
    48. ''' Alle Dateien (ohne Dateienung, ohne Duplikat) eines Ordners in einen ComboBox auflisten
    49. ''' </summary>
    50. ''' <param name="ordner">Ordner, dessen Inhalt aufgelistet wird</param>
    51. ''' <param name="cbo">ComboBox, in dem die Dateien angezeigt werden</param>
    52. ''' <param name="suchOption">Angabe, ob Unterverzeichnisse durchsucht werden</param>
    53. ''' <remarks></remarks>
    54. Private Sub ComboBoxFüllen(ByVal ordner As String, ByVal cbo As ComboBox, ByVal suchOption As IO.SearchOption)
    55. ' Ausnahmefehler ausgeben, wenn ordner nicht angegeben ist
    56. If String.IsNullOrEmpty(ordner) Then Throw New ArgumentNullException("Verzeichnis")
    57. Dim locDirInfo As New IO.DirectoryInfo(ordner)
    58. ' Fehler ausgeben, wenn ordner nicht existiert
    59. If Not locDirInfo.Exists Then Throw New IO.DirectoryNotFoundException
    60. Dim locDateiName As String = String.Empty
    61. Try
    62. cbo.BeginUpdate()
    63. cbo.Items.Clear()
    64. For Each locFileInfo As IO.FileInfo In locDirInfo.GetFiles("*.*", suchOption)
    65. ' Dateiname ohne Endung
    66. locDateiName = locFileInfo.Name.Replace(locFileInfo.Extension, "")
    67. ' Dateiname nur einmal in ComboBox aufnhemen
    68. If Not cbo.Items.Contains(locDateiName) Then
    69. cbo.Items.Add(locDateiName)
    70. End If
    71. Next
    72. Catch ex As Exception
    73. Throw ex
    74. Finally
    75. cbo.EndUpdate()
    76. locDirInfo = Nothing
    77. locDateiName = Nothing
    78. End Try
    79. End Sub
    Hallo xtts02,

    Damit du weiß was ich genau mache:

    CBO ließt die Daten aus DB

    VB.NET-Quellcode

    1. Sub Ausgabe()
    2. Dim con As New OleDb.OleDbConnection
    3. Dim cmd As New OleDb.OleDbCommand
    4. Dim reader As OleDb.OleDbDataReader
    5. Dim Song As New ArrayList
    6. con.ConnectionString = _
    7. "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    8. "Data Source=C:\Dokumente und Einstellungen\user\Eigene Dateien\Visual Express 2008\Projects\JAZZ Archiv ver.02\DATENBANK_BE.mdb"
    9. cmd.Connection = con
    10. cmd.CommandText = "select Song from tblSong_HptF where Song like '%" _
    11. & txtAngabe.Text & "%'" _
    12. & "ORDER by Song "
    13. con.Open()
    14. reader = cmd.ExecuteReader()
    15. cboSong.Items.Clear()
    16. Do While reader.Read()
    17. cboSong.Items.Add( _
    18. reader("Song"))
    19. Loop
    20. reader.Close()
    21. If txtAngabe.Text <> "" Then
    22. cboSong.DroppedDown = True
    23. End If


    hier habe dein Code eingesetzt:

    VB.NET-Quellcode

    1. Private _Musikordner As String = "C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & cboSong.Text
    2. Private Sub cboSong_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSong.Click
    3. Try
    4. ' _Musikordner = Verzeichnis
    5. ' Listbox1 = Listbox, in dem die gefundenen Dateien angezeigt werden
    6. ' DirectCast(sender, ComboBox).SelectedItem.ToString = In ComboBox1 ausgewählter Dateiname
    7. Me.ListBoxFüllen(_Musikordner, Form2.lboAudio, DirectCast(sender, ComboBox).SelectedItem.ToString, IO.SearchOption.AllDirectories)
    8. Catch ex As Exception
    9. MessageBox.Show(ex.Message)
    10. End Try
    11. End Sub
    12. ''' <summary>
    13. ''' Alle Dateien eines Verzeichnisses durch Angabe des Dateinamens in einem ListBox anzeigen
    14. ''' </summary>
    15. ''' <param name="ordner">Verzeichnis</param>
    16. ''' <param name="lstbox">Listbox, in dem die gefundenen Dateien angezeigt werden</param>
    17. ''' <param name="dateiName">Name der gesuchten Dateien</param>
    18. ''' <param name="suchOption">Angabe, ob Unterverzeichnisse durchsucht werden</param>
    19. ''' <remarks></remarks>
    20. Private Sub ListBoxFüllen(ByVal ordner As String, ByVal lstbox As ListBox, ByVal dateiName As String, ByVal suchOption As IO.SearchOption)
    21. ' Ausnahmefehler ausgeben, wenn ordner nicht angegeben ist
    22. If String.IsNullOrEmpty(ordner) Then Throw New ArgumentNullException("C:\Dokumente und Einstellungen\user\Eigene Dateien\JAZZ ARCHIV\PLAYFILES\AUDIO\" & cboSong.Text)
    23. Dim locDirInfo As New IO.DirectoryInfo(ordner)
    24. ' Fehler ausgeben, wenn ordner nicht existiert
    25. If Not locDirInfo.Exists Then Throw New IO.DirectoryNotFoundException
    26. Try
    27. lstbox.BeginUpdate()
    28. lstbox.Items.Clear()
    29. For Each locFileInfo As IO.FileInfo In locDirInfo.GetFiles("*" & dateiName & "*", suchOption)
    30. ' Vollständiger Pfad anzeigen (FullName)
    31. lstbox.Items.Add(locFileInfo.FullName)
    32. Next
    33. Catch ex As Exception
    34. Throw ex
    35. Finally
    36. lstbox.EndUpdate()
    37. locDirInfo = Nothing
    38. End Try
    39. End Sub


    Leider die Meldung:
    Fehler beim erstellen des Formular.

    lg

    toto
    lg toto