Announcement

Collapse
No announcement yet.

Dateien sortieren anhand von Eigenschaften

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dateien sortieren anhand von Eigenschaften

    Hallo,
    habe ein Problem. Und zwar möchte ich Bilder anhand ihres Aufnahmedatums sortieren, nur leider habe ich keine Ahnung wie. Hab gelesen dass man dazu die Propertys auslesen muss, aber wie geht das sortiren nun dann wirklich?

    Vielen Dank schon ma im Voraus für eure Antworten!

    Mit freundlichen Grüßen
    Jan

  • #2
    Hallo,

    das musst Du schrittweise erreichen. Woher kommen denn die Bilder und die Daten? Davon hängt auch die Sortierfunktion ab; denn Du kannst nicht davon ausgehen, dass eine solche spezielle Anforderung von einem Standardverfahren erledigt werden kann.

    Für die folgende Beschreibung nehme ich, dass es sich um jpg-Dateien in einem speziellen Verzeichnis der Festplatte handelt und das Speicherdatum dem Aufnahmedatum entspricht. Dann geht es etwa so:

    Warnung: Ich kann VB nur lesen, nicht schreiben. Aber die SDK-Doku enthält genügend VB-Beispiele; Du brauchst also nur bei den Methoden nachzulesen.

    Zuerst musst Du alle Dateinamen einlesen:
    Code:
    string[] filenames = Directory.GetFiles("C:\\Eigene Dateien", "*.jpg", true);
    Dann benötigst Du zu jeder Datei die Datei-Informationen (genauer: das Erstellungsdatum). Dummerweise hat FileInfo keine Datumsangaben; deshalb bietet sich eine eigene Klasse MyFileInfo an (einfachste Struktur: als Eigenschaften FullName und CreateTime und ein Konstruktor, der beides festlegt).

    Damit bekommen wir dann eine Liste mit allen Informationen:
    Code:
    List<MyFileInfo> infos = new List<MyFileInfo>(); 
    foreach(string filename in filenames) {
        infos.Add(new MyFileInfo(filename, File.GetCreationTime(filename)));
    }
    Diese Liste muss nun sortiert werden. Dazu musst Du Dir einen eigenen Sortierer schreiben. Das geht aber ganz schnell; Du musst nur nach dem Beispiel von List<T>.Sort-Methode (Comparison (generisch)) vorgehen und den String-Vergleich der Dinosaurier durch den DateTime-Vergleich nach CreateTime ersetzen.

    Viel Erfolg! Jürgen

    Comment


    • #3
      @Jürgen: Danke das du dich gemeldest hast. Leider ist es aber so, dass das Speicherdatum nicht dem Aufnahmedatum entspricht.
      Was kann man da machen?






      PS: Kein Problem mit dem Quelltext. Ich kann C# lesen.
      Zuletzt editiert von Knoxville1988; 20.03.2008, 15:22.

      Comment


      • #4
        Originally posted by Knoxville1988 View Post
        Leider ist es aber so, dass das Speicherdatum nicht dem Aufnahmedatum entspricht.
        Was kann man da machen?
        Woher soll ich das wissen? Mein Beispiel ging von einer Datei aus. Wenn das nicht Deiner Situation entspricht, bekommst Du das Aufnahmedatum irgendwo anders her. Dieses Datum habe ich in der Klasse MyFileInfo eingetragen; damit funktioniert mein Lösungsverfahren grundsätzlich auf jeden Fall.

        Aber wenn Du nichts erwähnst, woher das Datum kommt Jürgen

        Comment


        • #5
          Ganz ruhig. Sollte doch keine Kritik sein.

          Comment

          Working...
          X