German Liste sortieren

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

ich lese die Dateien in einem Verzeichnis als Liste ein.
Die Dateinamen beginnen alle mit dem Datum (z.B. 01.12.2012_meineDatei.txt ).
Wie kann ich diese Dateiliste korrekt kalendarisch sortieren ( also nach Jahr, Monat und Tag)?
B4X:
DateiList = File.ListFiles(oListDir)
 

peternmb

Well-Known Member
Licensed User
Longtime User
Könntest Du die Dateinamen nicht so erstellen ?
2012.01.29_Datei.txt
2012.12.01_meineDatei.txt
Dann könntes Du direkt mit DateiList.Sort(True) sortieren.
Beste Grüsse.
Ja, das ist mir schon klar, aber 1.) ist es dazu zu spät und 2.) möchte ich das nicht, da im Dateinamen außer dem Datum noch andere relevante Informationen die zur Dateiauswahl nötig sind angezeigt.

Ich vermute, dass ich erst alles in eine andere Liste sortieren muss, wo das dann so voran gestellt ist.
Ich hatte gehofft es gäbe da eine andere Möglichkeit...
In meiner Windows-Programmiersprache würde ich z.B. einfach nach substr(dateiname,7,4)+substr(dateiname,4,2)+substr(dateiname,1,2) sortieren.
 

klaus

Expert
Licensed User
Longtime User
Ich meinte ja nur die Reihenfolge des Datums zu ändern der Rest des Namens bleibt gleich.
Hast Du viele Dateien ?
Du könntest ein kleine Progamm schreiben das die Dateinamen umschreibt anstatt einen 'umständlichen' Code zum sortieren in dein Progamm einzubinden.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
nein, ich möchte die Dateinamen nicht ändern, habe es aber jetzt hinbekommen - so langsam kapiere ich wie es geht :sign0142:
B4X:
Sub sort_list     
  'DateiList nach Datum sortieren, die neuste Datei steht oben
  Dim xDatei As String
  Dim xsort As String
  Dim xDateiList As List
  xDateiList.Initialize
  For i=0 To DateiList.Size-1
    xDatei = DateiList.Get(i)
    If xDatei.EndsWith(".TXT") = True Then
       xsort=xDatei.SubString2(6,10) & xDatei.SubString2(3,5) & xDatei.SubString2(0,2) & xDatei
       xDateiList.Add(xsort)
    End If
  Next
  xDateiList.Sort(False)
  DateiList.Initialize
  For i=0 To xDateiList.Size-1
    xDatei = xDateiList.Get(i)
    xsort= xDatei.SubString2(8,xDatei.Length)
    DateiList.add(xsort)
  Next     
End Sub
 
Top