Suchprogramm nach jpg suchen und in DataGridView

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Suchprogramm nach jpg suchen und in DataGridView

    Hi zusammen,

    hab ein kleines Problem und bräuchte bitte eure Hilfe :)



    Mach grad ein "Suchprogramm" für meine Filmesammlung:

    1. Ich suche per FolderBrowserDialog einen Ordner aus (FolderBrowser)

    2. Ich wähle per ComboBox eine Dateiendung fest (*.avi, *.mkv, *.mpg)

    3. Ich drücke auf einen Button und er Listet mir z.B. alle AVI-Filmdateien in meinem DataGridView1.


    Soweit klappt auch alles! ABER:

    Wie mache ich es nun, dass das Programm auch gleich überprüft, ob sich eine JPG im Ordner der AVI befindet?

    Also quasi, ob bei jedem gelisteten Film ein Cover dabei ist?!



    Hier der Code für's Ordner wählen:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim FolderBrowser As New FolderBrowserDialog
    3. FolderBrowser.Description = "Bitte wählen ..."
    4. FolderBrowser.ShowNewFolderButton = True
    5. FolderBrowser.RootFolder = System.Environment.SpecialFolder.Desktop
    6. FolderBrowser.SelectedPath = My.Computer.FileSystem.SpecialDirectories.Desktop
    7. If FolderBrowser.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. Me.Label1.Text = FolderBrowser.SelectedPath
    9. End If
    10. pfad = Me.Label1.Text
    11. If Not pfad.EndsWith("\") Then
    12. pfad &= "\"
    13. End If
    14. End Sub




    Hier der Code, bei dem ich Hilfe brauche wegen "Coversuche":

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. DataGridView1.Rows.Clear()
    3. Dim Datei As String
    4. Dim cover As String = True
    5. Dim nocover As String = False
    6. If ComboBox1.SelectedItem Is Nothing Then
    7. ElseIf Label1.Text = "" Then
    8. MsgBox("Bitte erst Ordner wählen und Endung zuweisen!")
    9. Else
    10. For Each Datei In My.Computer.FileSystem.GetFiles(pfad, FileIO.SearchOption.SearchAllSubDirectories, ComboBox1.SelectedItem)
    11. 'Hier ist Frage Nr. 1: Wie überprüfe ich, ob in dem Ziellaufwerk auch ein Bild ist?
    12. If Datei.Verzeichnis.hat.auch.Jpg.drin Then
    13. DataGridView1.Rows.Add(System.IO.Path.GetFileNameWithoutExtension(Datei), System.IO.Path.GetDirectoryName(Datei) & "\", cover)
    14. Else
    15. DataGridView1.Rows.Add(System.IO.Path.GetFileNameWithoutExtension(Datei), System.IO.Path.GetDirectoryName(Datei) & "\", nocover)
    16. End If
    17. Next
    18. 'Hier wird jedes Feld eingefärbt, welches 'Cover = "True"' ist
    19. Dim CellWert As String
    20. Dim CellFarbe As Color
    21. For I As Integer = 0 To DataGridView1.Rows.Count - 1
    22. CellWert = DataGridView1.Rows(I).Cells(2).Value
    23. If CellWert = cover Then
    24. CellFarbe = Color.Green
    25. Else
    26. CellFarbe = Color.Red
    27. End If
    28. DataGridView1.Rows(I).Cells(2).Style.BackColor = CellFarbe
    29. Next
    30. End If
    31. End Sub




    Hier mal der komplette Code bisher:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Dim pfad As String
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. pfad = ""
    6. DataGridView1.Columns.Add("1", "Name")
    7. DataGridView1.Columns.Add("2", "Pfad")
    8. DataGridView1.Columns.Add("3", "Cover")
    9. ComboBox1.Items.Add("*.avi")
    10. ComboBox1.Items.Add("*.mkv")
    11. ComboBox1.Items.Add("*.mpg")
    12. ComboBox1.SelectedIndex = 0
    13. End Sub
    14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    15. Dim FolderBrowser As New FolderBrowserDialog
    16. FolderBrowser.Description = "Bitte wählen ..."
    17. FolderBrowser.ShowNewFolderButton = True
    18. FolderBrowser.RootFolder = System.Environment.SpecialFolder.Desktop
    19. FolderBrowser.SelectedPath = My.Computer.FileSystem.SpecialDirectories.Desktop
    20. If FolderBrowser.ShowDialog = Windows.Forms.DialogResult.OK Then
    21. Me.Label1.Text = FolderBrowser.SelectedPath
    22. End If
    23. pfad = Me.Label1.Text
    24. If Not pfad.EndsWith("\") Then
    25. pfad &= "\"
    26. End If
    27. End Sub
    28. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    29. DataGridView1.Rows.Clear()
    30. Dim Datei As String
    31. Dim cover As String = True
    32. Dim nocover As String = False
    33. If ComboBox1.SelectedItem Is Nothing Then
    34. ElseIf Label1.Text = "" Then
    35. MsgBox("Bitte erst Ordner wählen und Endung zuweisen!")
    36. Else
    37. For Each Datei In My.Computer.FileSystem.GetFiles(pfad, FileIO.SearchOption.SearchAllSubDirectories, ComboBox1.SelectedItem)
    38. 'Hier ist Frage Nr. 1: Wie überprüfe ich, ob in dem Ziellaufwerk auch ein Bild ist?
    39. If Datei.Verzeichnis.hat.auch.Jpg.drin Then
    40. DataGridView1.Rows.Add(System.IO.Path.GetFileNameWithoutExtension(Datei), System.IO.Path.GetDirectoryName(Datei) & "\", cover)
    41. Else
    42. DataGridView1.Rows.Add(System.IO.Path.GetFileNameWithoutExtension(Datei), System.IO.Path.GetDirectoryName(Datei) & "\", nocover)
    43. End If
    44. Next
    45. 'Hier wird jedes Feld eingefärbt, welches 'Cover = "True"' ist
    46. Dim CellWert As String
    47. Dim CellFarbe As Color
    48. For I As Integer = 0 To DataGridView1.Rows.Count - 1
    49. CellWert = DataGridView1.Rows(I).Cells(2).Value
    50. If CellWert = cover Then
    51. CellFarbe = Color.Green
    52. Else
    53. CellFarbe = Color.Red
    54. End If
    55. DataGridView1.Rows(I).Cells(2).Style.BackColor = CellFarbe
    56. Next
    57. End If
    58. End Sub
    59. End Class
    Meinst Du dies:

    VB.NET-Quellcode

    1. Dim pathIn As String = "c:\temp\new.avi"
    2. Dim pathOut As String = System.IO.Path.ChangeExtension(pathIn, ".jpg")
    3. Dim ex As Boolean = System.IO.File.Exists(pathOut)
    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!
    Danke erstmal für die Antwort.

    Ähm..und wie binde ich das Ganze nun ein?

    Ich meine:

    Mein Programm sucht in einem Ordner ALLE Dateien nach der Endung AVI.

    Listet mir dann ALLE AVI-Dateien inkl. jeweiligem Pfad in einem DataGridView.



    Also:

    Film 1 | Folder\Ordner123\OrdnerABC\

    Film 2 | Folder\OrdnerYXZ\

    (Folder ist der Ordner, den ich per FolderBrowserDialog gewählt hab..)



    Nun will ich halt, dass er in den jeweiligen Ordnern nach irgendeinem JPG sucht (muss nicht den gleichen Namen haben wie der Film):

    Also am Schluss dann so:

    Film 1 | Pfad | Cover JA (JPG ist mit im Ordner von Film 1)

    Film 2 | Pfad | Cover NEIN (Es ist kein JPG im Ordner von Film 1)



    Oumann..ich bin echt schlecht im erklären ;)

    Hoffe, jemand versteht mich :)

    LG Markus


    Entwurfsansicht zur besseren Verständnis:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DiDi“ ()

    DiDi schrieb:

    Ähm..und wie binde ich das Ganze nun ein?

    Deine Frage haben wir im Hauptforum gefunden, das bedeutet zumindest, dass Du gewisse Grundlagen beherrschst und CodeSnippets verwenden kannst.
    Nimm Dir mein Post, pack Dir den Code in ein Button_Click-Event und füge als neuen Code hintendran:

    VB.NET-Quellcode

    1. If ex Then
    2. MessageBox.Show("Vorhanden")
    3. Else
    4. MessageBox.Show("Nicht vorhanden")
    5. End If
    Dann holst Du Dir die Variable pathIn aus einem OpenFileDialog.
    Und dann ist Dein Programm schon fast fertig.
    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!