Dateien umbenennen Einträgen aus zwei Listboxen (NameIst & NameSoll)

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Zeus_EA.

    Dateien umbenennen Einträgen aus zwei Listboxen (NameIst & NameSoll)

    Hallo alle zusammen,

    ich benötige einmal mehr eure Hilfe!
    Ich habe eine WinForm mit zwei Listboxen.
    In die eine Listbox "lboNameIst" lese ich Dateinamen aus einem Ordner ein, in die andere "lboNameSoll" lese ich aus einer Txt-Datei die "Wunschnamen" in passender Reihenfolge ein.

    Nun soll per Button die erste Datei aus "lboNameIst" umbenannt werden in den ersten Eintrag von "lboNameSoll". usw...


    Wie würdet ihr das machen? Sicher mit einer ForEach-Schleife oder? Aber wie bekommt man den Bezug zwischen den beiden Listboxen hin?




    Vielen Dank bereits im Voraus!
    Falls es immer beide an gleicher Position sind kannst du anhand einer Schleife immer auf den index beider Listboxen zurückgreifen.
    Dazu muss aber wirklich die Reihenfolge komplett gleich sein.

    Ansonsten denke ich wird es schwierig. (Eventuell über eine Dictionary).

    VB.NET-Quellcode

    1. for i as integer = 0 to lboNameIst.count -1
    2. System.io.file.move(lboNameIst.items(i), lboNameSoll.items(i))
    3. next i


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    per Button die erste Datei und ForEach-Schleife passt nicht zusammen.
    Wollen wir also annehmen, dass Du per ButtonKlick alle Dateien umbenennen willst.
    Probier mal dies:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. For i As Integer = 0 To Math.Min(lboNameIst.Items.Count, lboNameSoll.Items.Count) - 1
    3. System.IO.File.Move(lboNameIst.Items(i).ToString, lboNameSoll.Items(i).ToString)
    4. Next
    5. End Sub
    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!
    Vielen Dank euch beiden!
    per Button die erste Datei und ForEach-Schleife passt nicht zusammen.

    Wollen wir also annehmen, dass Du per ButtonKlick alle Dateien umbenennen willst.
    Ja, so war es auch gemeint... hab mich da wohl etwas umständlich ausgedrückt.

    Ich hatte zwar nicht unbedingt mit dem fertigen Code gerechnet, habe sie mir aber beide angeschaut und eben daraus gelernt ;)

    Entschieden habe ich mich für die Variante von RodFromGermany, da hier noch geprüft wird, welche Listbox die niedrigere Anzahl an Items enthält und eben nur so oft die Schleife durchlaufen lässt.
    Bei fichz seinem Code kommt es nämlich zu einem Fehler, wenn eine unterschiedliche Anzahl Intems in den Listboxen steht. Übrigens enthält der Code auch einen kleinen Fehler:
    in Codezeile 1 sollte "lboNameIst.Items.count -1" stehen

    Also vielen Dank nochmal euch beiden für die schnelle Hilfe!

    Zeus_EA schrieb:

    Übrigens enthält der Code auch einen kleinen Fehler:
    Der Code von @fichz: enthält keinen Fehler, er enthält eine von Dir mit Bravour gelöste Denksportaufgabe. :thumbsup:
    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!