Zufällige Datei aus Ordner öffnen

  • VB.NET

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

    Zufällige Datei aus Ordner öffnen

    Ich habe mir vor einiger zeit ein kleines Programm geschrieben das eine zufällige Datei (Film/Musik) aus einem Ordner öffnet und mit dem jeweiligen Programm abspielt

    Der Code dazu ist dieser:

    VB.NET-Quellcode

    1. Dim files() As String = IO.Directory.GetFiles("PFAD")
    2. Dim r As New Random()
    3. Dim zufallspath As String = files(r.Next(0, files.Length - 1))
    4. Process.Start(zufallspath)


    Ich würde das ganze gern ein Stück weiterbringen...
    z.B. Aus einem Ordner mit allen möglichen Filmen, einen zufälligen Film mit dem Genre "Drama" öffnen.

    Ich weiss wie man eine Zufallsdatei öffnen kann, und ich weiss wie man die "Tags" mit der System.IO.FileInfo Klasse auslesen kann...

    Aber wie kann ich beides kombinieren? Ist das überhaupt möglich?

    Vielen Dank.
    Lies alle Dateien aus dem Ordner in eine List ein, die deinen Kriterien entsprechen.
    Also zB:

    VB.NET-Quellcode

    1. Dim genreList As List(Of String) = New List(Of String)
    2. For Each Fname As String In IO.Directory.GetFiles("PFAD","*.mp3") 'zB alle MP Files
    3. If IsIndramaGenre(Fname) Then 'Diese Funktion hast du ja schon zum Auslesen der Tags :) Musst du halt entsprechend ersetzen
    4. genreList.Add(Fname)
    5. End If
    6. Next
    7. Dim r As New Random
    8. Dim zufallspath As String = genreList(r.Next(0, genreList.Count - 1))
    9. Process.Start(zufallspath)
    Das ist meine Signatur und sie wird wunderbar sein!
    Hey,

    du könntest alle Dateien aus einem Ordner in ein array speichern und dann per Zufallszahl den Prozess starten.

    Zu den Generen:
    Du könntest dir ein Filmobjekt mit den eigenschaften der Tags des Filmes erstellen.. bsp. Name, Genere, Produzent, usw. dann alle Filme aus einem Ordner einlesen und in einer List of Film speichern. Per Zufall eine Zahl auswählen überprüfen ob der Film z.B. die gewünschte Genere besitzt wenn ja starten, wenn nein nächste Zahl.

    Ich hoffe ich konnte helfen.

    lg.

    LucaWelker
    lg.

    LucaWelker
    Soweit schonmal vielen Dank.

    @Mono

    VB.NET-Quellcode

    1. If IsIndramaGenre(Fname) Then 'Diese Funktion hast du ja schon zum Auslesen der Tags :) Musst du halt entsprechend ersetzen


    gibt mir die fehler meldung.. isindramegenre wurde nicht geklariert.. was soll ich ersetzen?
    (Ich kann die Tags immer nür für eine datei auslesen)

    @LucaWelker
    Auch das hört sich ganz gut an.. aber wie erstelle ich diese array listen für tags in einem ordner?
    ich kenne das beispiel aus vba "wieviele schüler sind in welcher klasse" da haben wir das aber vorher in einer exceltabelle angelegt ^^..
    An dieser Stelle sollst du das Genre der Datei auslesen.
    Der PFad ist ja in FName.
    Du liest also das Genre aus und prüfst, ob es das Genre ist was du willst. Wenn ja, dann füge es der Liste hinzu.

    Ich glaube dir fehlt grundlegendes Verständnis für Programmieren.
    Lerne erstmal was Funktionen etc sind.
    Das ist meine Signatur und sie wird wunderbar sein!
    Hey,

    ich hätte vorweg vllt. erstmal fragen sollen ob du schonmal wirklich mit Objekten Programmiert hast?

    Denn wenn ja ist dein Problem einfach zu lösen. Bsp.

    Du erstellst dir ein Objekt, sagen wir mal als Namen Film. Dieses Objekt hat die Eigenschaften: Name, Produzent, Genere, Jahr, usw.

    Als nächstes erstellst du dir eine Leere Liste dieses Filmobjektes (List of(Film)). Nun läufst du mithilfe einer schleife durch alle Filme in einem Ordner und liest die Tags für jeden Film aus und Speicherst sie in einem neuen Filmobjekt. (Das Objekt muss bei jedem Schleifen Durchlauf neu erstellt werden.) Am Ende JEDES Durchlaufes musst du dass Objekt deiner Liste Hinzufügen. Nun kannst du per Zufallszahl eine Zahl zwischen 0 und Liste.Count erstellen. Und wie bei einem Array per Liste[zufallszahl] auf die einzelnen Elemente zugreifen.

    Zu jeden einzelnen dieser Schritte solltest du im Internet genug finden.

    Ich hoffe ich konnte helfen.

    lg.

    LucaWelker
    lg.

    LucaWelker