vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Dateisystem · Dateien allgemein   |   VB-Versionen: VB4, VB5, VB626.04.02
Dateiliste sortiert nach Datum / Zeit

Dieses Beispiel zeigt, wie sich eine Liste aller Dateien eines Ordners - sortiert nach Datum/Zeit - erstellen lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  27.720 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Das Ermitteln aller Dateien eines Ordners lässt sich sehr einfach über die VB-eigene Funktion Dir erledigen. Jedoch sind die ermittelten Dateien immer alphabetisch sortiert. Wie sieht es aber aus, wenn die Dateien nach Datum / Uhrzeit sortiert angezeigt werden sollen?

Wir behelfen uns eines kleinen Tricks
Wir ermitteln nicht nur den Dateinamen, sondern auch die Datum-/Zeitangabe. Hierfür stellt uns VB die Funktion FileDateTime zur Verfügung. Weiterhin fügen wir die ermittelten Dateien nicht sofort in die Liste, sondern speichern diese zunächst in ein Array-Feld. Dieses lässt sich dann später sehr schnell mit dem QuickSort-Algorithmus sortieren. Und wenn wir jetzt vor jedem Eintrag zunächst das Datum stellen - und zwar im Format "yyyymmdd hhnnss", so sortiert uns QuickSort unsere Dateiliste automatisch nach Datum/Zeit.

Und genau das wollten wir ja auch erreichen!

Dim sFile As String
Dim sPath As String
Dim sFileDate As Variant
Dim lMax As Long
Dim lCount As Long
ReDim aFiles(1 To 1) As String
 
' Pfad (Verzeichnis)
sPath = "d:\temp\"
 
' Array: aktuelle Größe der Dimension
lMax = UBound(aFiles)
 
' alle Dateien im angegebenen Ordner ermitteln
sFile = Dir$(sPath & "*.*")
While sFile <> ""
  If sFile <> "." And sFile <> ".." Then
    ' Dateizeit ermitteln
    sFileDate = FileDateTime(sPath & sFile)
 
    ' Array dynamisch vergrößern
    ' siehe Tipps & Tricks
    lCount = lCount + 1
    If lCount > lMax Then
      lMax = lCount * 2
      ReDim Preserve aFiles(1 To lMax)
    End If
 
    ' wir stellen dem Dateinamen die Zeitangabe voran,
    ' so daß die spätere Sortierung via QuickSort
    ' die Dateien nach Datum sortiert
    aFiles(lCount) = Format$(sFileDate, _
      "yyyymmdd hhnnss") & sFile
  End If
  sFile = Dir$
Wend
 
' Array: überflüssigen Speicher freigeben
lMax = lCount
ReDim Preserve aFiles(1 To lMax)
 
' Array via Quicksort sortieren
QuickSort aFiles()
 
' sortierte Anzeige der Dateien in einer ListBox
' (nach Datum sortiert - wohlgemerkt ;-))
For lCount = lMax To 1 Step -1
  List1.AddItem Mid$(aFiles(lCount), 16)
Next lCount

Die "Übertragung" des sortierten Arrays erfolgt rückwärts, so daß in der Liste die Datei mit dem neuesten Datum ganz oben steht.

Den Code für den QuickSort-Algorithmus finden Sie hier:
 QuickSort in VB
 

Dieser Tipp wurde bereits 27.720 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel