ListBox- Einträge sortieren

Outsider77

Erfahrenes Mitglied
Hallo zusammen...
Ich habe einen Ordner, in dem mehrere .txt- Dateien stehen...und auch ständig neue dazukommen.
Ich lasse mir all diese Dateien in einer ListBox anzeigen.
Über einen 'Aktualisieren- Button' kann man die Liste auf den neuesten Stand bringen.
Gibt es eine einfache Möglichkeit, die ListBox- Einräge so zu sortieren, dass immer die
zuletzt erstellte txt ganz oben steht?

Eine eigene Idee wäre, alle txt- Dateien vorher in eine einzige neue Datei auszulesen und dabei schon vorab zu sortieren.
In der Eingabe- Aufforderung kann man zb den DIR- Befehl mit den Parametern "O" für sortiert und "-D" für jüngste zuerst erweitern. Damit hätte ich dann zb eine Text- Datei, in der die anderen txt's schon so sortiert sind, wie ich das gern hätte.
Jetzt müßte ich diese eine neue Text- Datei auslesen und in die ListBox übertragen...aber wie?

Danke für Eure Hilfe
Gruß Outi
 
Zuletzt bearbeitet:
Hierzu fallen mir nur die folgenden Stichworte ein:

2-dimensionales Array bilden
1. Dimension --> Dateiname
2. Dimension --> TimeStamp der Datei

Schleife durch den Ordner, um alle Dateinamen und TimeStamps festzustellen --> gleichzeitig in das Array einlesen

Das Array an eine Sortierfunktion übergeben (Quicksort, Bubblesort usw.) mit Sortierkriterium 2. Dimension (TimeStamp) und absteigend.

Das Array in die Listbox einlesen.
 
Ok vielen Dank! Aber das sind für mich ehrlich gesagt "Böhmische Dörfer". Ich fragte eigentlich nach einer einfachen Lösung...aber kein Problem...sicher ist das für Dich einfach.
Vielleicht kannst Du mir aber bei einem anderen Problem helfen.
Ich habe 2 Listboxen...wie kann ich beide nach gleichen Einträgen durchsuchen und falls es gleiche Einträge gibt, den in der ersten Listbox löschen? Und bitte super einfach, wenn das geht :D
Danke schonmal...
Gruß Outi
 
2 gegenläufige Schleifen
Die Schleife über die ListBox1 sollte Rückwärts laufen, während die Schleife über Listbox2 vorwärts oder rückwärts laufen kann.

Rückwärts bei ListBox1 deshalb, weil du dann den ListCount nicht im Auge behalten musst

Visual Basic:
For i=List1.ListCount-1 to 0 Step-1

For j=0 to List2.ListCount-1

If List1.List(i)=List2.List(j) Then List1.Remove(i)

Next

Next

Ich weiss jetzt nur nicht mehr, ob es eben List1.List(i) heisst oder List1.Item(i)
Hab Listbox schon ewig nimma benutzt

EDIT: Es gibt keine andere Lösung, als den TimeStamp (dt. "Zeitstempel") jeder Datei auszuwerten. DU kannst das entweder per FSO (*igitt*) oder per API auswerten.
 
Zuletzt bearbeitet:
Hey cool...der Vergleich und das Löschen funktionieren...
Aber jetzt nochmal zurück zum Sortieren...wie gesagt, ich hab mir ne Batch- Datei geschrieben, die alle txt- Dateien in dem Verzeichnis zu einer Text- Datei (bsp. komplett.txt) zusammenfaßt.
Und zwar auch gleich so sortiert, wie ich das möchte, nämlich untereinander
nach Datum (die jüngste Datei steht ganz oben).
Wie kann ich jetzt diese eine Textdatei „komplett.txt“ auslesen und in die Listbox übertragen,
dass dann in der Listbox die Einträge genauso stehen wie in der komplett.txt?
Gruß
 
Visual Basic:
Dim Datei As Integer
Dim ReadLine As String

Datei=Freefile

Open App.Path & "\komplett.txt" For Input as #Datei   'bzw. der Pfad halt dorthin. Die Datei muss ja nicht im gleichen Ordner wie deine Exe sein

Do

Line Input#Datei,ReadLine

ListBox1.AddItem Readline

Loop Until EOF(Datei)

Close#Datei

...und eben halt wie beim Lotto: Angaben ohne Gewähr ^^
 

Neue Beiträge

Zurück