vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Ordner & Verzeichnisse   |   VB-Versionen: VB5, VB606.08.04
Verzeichnis sortiert nach Dateidatum auslesen

Dieser Tipp zeigt, wie sich alle Dateien eines Ordners sortiert nach Datum/Zeit in ein Array auslesen lassen.

Autor:   Dieter OtterBewertung:  Views:  31.743 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Nachfolgende Funktion ermittelt alle Dateien eines Ordners und gibt diese sortiert nach Datum/Zeit als String-Array zurück.

Public Function DirReadFiles(ByVal sPath As String) As Variant
  Dim sFile As String
  Dim vDate As Variant
  Dim nCount As Long
  Dim i As Long
  ReDim sFiles(0) As String
 
  ' ggf. abschließenden Backslash anfügen
  If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
 
  ' alle Dateien ermitteln und in ein Array speichern
  nCount = -1
  sFile = Dir$(sPath & "*.*")
  Do While Len(sFile) > 0
    If sFile <> "." And sFile <> ".." Then
      ' Array bei Bedarf redimensionieren
      nCount = nCount + 1
      If UBound(sFiles) < nCount Then
        ReDim Preserve sFiles(nCount * 2)
      End If
 
      ' Datum/Zeit ermitteln
      vDate = FileDateTime(sPath & sFile)
 
      ' Array füllen
      sFiles(nCount) = Format$(vDate, "yyyymmdd hhnnss") & sFile
    End If
    sFile = Dir$
  Loop
 
  ' Array nach Datum/Zeit sortieren
  If nCount >= 0 Then
    ' Array auf korrekte Größe bringen
    ReDim Preserve sFiles(nCount)
 
    ' Array sortieren
    QuickSort sFiles(), 0, nCount
 
    ' Datum/Zeit aus dem Array extrahieren
    For i = 0 To nCount
      sFiles(i) = Mid$(sFiles(i), 16)
    Next i
 
    DirReadFiles = sFiles    
  End If  
End Function

Zum Sortieren des Arrays greifen wir auf den Tipp  QuickSort in VB zurück.

Beispiel:
Alle Dateien des Ordners "d:\temp" ermitteln und sortiert nach Datum/Zeit in einem ListView-Control anzeigen.

Private Sub Form_Load()
  Dim sPath As String
  Dim vFiles As Variant
  Dim i As Long
  Dim oItem As ListItem
 
  ' ListView-Spalten erstellen
  With ListView1.ColumnHeaders
    .Add , , "Dateiname"
    .Add , , "Datum/Zeit"
  End With
  ListView1.View = lvwReport
 
  ' alle Dateien aus D:\Temp ermitteln 
  ' und sortier nach Datum/Zeit ins ListView übertragen
  sPath = "d:\temp\"
  vFiles = DirReadFiles(sPath)
  If Not IsEmpty(vFiles) Then
    For i = 0 To UBound(vFiles)
      Set oItem = ListView1.ListItems.Add()
      oItem.Text = vFiles(i)
      oItem.SubItems(1) = FileDateTime(sPath & vFiles(i))
    Next i
  End If
End Sub



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.