Seite 1 von 1
Verzeichnis auslesen und nach Datum sortieren
Verfasst: 20.03.2012 22:59
von Micro
Hallo ihr alle,
ich möchte ein Verzeichnis nach Datum sortiert auslesen und den Namen der neuesten Datei als Rückgabewert haben.
Wie geht das am einfachsten? Als Procedure wäre super, komme aber einfach nicht auf den Dreh...
Gruß Fank
Re: Verzeichnis auslesen und nach Datum sortieren
Verfasst: 20.03.2012 23:27
von Sunny
Meinst du vieleicht etwas in der Art?
Code: Alles auswählen
Structure ent
date.i
name.s
EndStructure
NewList Entrys.ent()
Procedure SortFiles(Dir.s, List Entrys.ent())
If ExamineDirectory(0, Dir, "*.*")
While NextDirectoryEntry(0)
AddElement(Entrys())
Entrys()\date = DirectoryEntryDate(0, #PB_Date_Modified) ;#PB_Date_Modified = letzte veränderung / #PB_Date_Accessed = letzter Zugriff / #PB_Date_Created = Erstellungs-Datum
Entrys()\name = DirectoryEntryName(0)
Wend
SortStructuredList(Entrys(), #PB_Sort_Ascending, OffsetOf(ent\date), #PB_Sort_Integer) ; #PB_Sort_Ascending = aufsteigend / #PB_Sort_Descending = absteigend
FinishDirectory(0)
EndIf
EndProcedure
SortFiles("C:\", Entrys())
ForEach Entrys()
Debug Entrys()\name
Next
Re: Verzeichnis auslesen und nach Datum sortieren
Verfasst: 20.03.2012 23:29
von ts-soft
Code: Alles auswählen
Procedure.s bla(dir.s)
Protected date, tmp, result.s
Protected exDir = ExamineDirectory(#PB_Any, dir, "*.*")
If exDir
While NextDirectoryEntry(exDir)
If DirectoryEntryType(exDir) = #PB_DirectoryEntry_File
tmp = DirectoryEntryDate(exDir, #PB_Date_Modified)
If tmp > date
date = tmp
result = DirectoryEntryName(exDir)
EndIf
EndIf
Wend
FinishDirectory(exDir)
EndIf
ProcedureReturn result
EndProcedure
Debug bla(GetTemporaryDirectory())
Re: Verzeichnis auslesen und nach Datum sortieren
Verfasst: 20.03.2012 23:43
von Micro
Leute, ihr macht mich wieder schwach...
Kaum eine Frage da, schon eine Antwort = RIESIG !!!!
Hab' auch in der zwischenzeit ein bssl gebastelt und (wie ich finde) ein recht unsauberen Code hingekrizelt:
Code: Alles auswählen
; Verzeichnisse dynamisch auslesen und festlegen
Procedure.s spec_folder(clsi_const.l)
path.s = Space(2048)
SHGetSpecialFolderLocation_(0,clsi_const,@pidl.l)
SHGetPathFromIDList_(pidl,@path)
CoTaskMemFree_(pidl)
ProcedureReturn path+"\"
EndProcedure ; spec_folder()
Procedure.s sucheBackup(Liste.s)
Structure Struktur
Name.s
Datum.l
EndStructure
NewList Datei.Struktur()
If ExamineDirectory(0, spec_folder($5) + "Sicherung\", "*.zip")
While NextDirectoryEntry(0)
If DirectoryEntryName(0) <> "." And DirectoryEntryName(0) <> ".."
AddElement(Datei())
Datei()\Name.s = DirectoryEntryName(0)
Datei()\Datum.l = DirectoryEntryDate(0, #PB_Date_Created)
EndIf
Wend
FinishDirectory(0)
EndIf
SortStructuredList(Datei(), #PB_Sort_Descending, OffsetOf(Struktur\Datum.l), #PB_Sort_Long)
ForEach Datei()
Liste.s = Datei()\Name.s
Next
ProcedureReturn Liste.s
EndProcedure
result.s = sucheBackup(Liste.s)
Debug result.s
Man(n) merkt, das ich doch ab- und zu doch zu sehr das "Rad" neu erfinden will. Naja, werd's noch lernen
So, nun aber zu den Lösungen von euch: Alle Lösungen sind RIESIG, keine Frage. Ich werde die Lösung von TS-Soft nehmen, ist einfach und schnell anzupassen!
Vielen Dank euch alle, habt mir wieder seeeehr gut und viel geholfen!
Viele Grüße aus Dortmund
Frank