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
Verzeichnis auslesen und nach Datum sortieren
-
- Beiträge: 59
- Registriert: 28.12.2006 17:44
- Computerausstattung: Intel 10850K, 16GB RAM
div. andere Rechner... - Wohnort: Nordkirchen
Verzeichnis auslesen und nach Datum sortieren
PB 5.73 LTS - Win 11 Pro / 64Bit
Re: Verzeichnis auslesen und nach Datum sortieren
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
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Verzeichnis auslesen und nach Datum sortieren
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())
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 59
- Registriert: 28.12.2006 17:44
- Computerausstattung: Intel 10850K, 16GB RAM
div. andere Rechner... - Wohnort: Nordkirchen
Re: Verzeichnis auslesen und nach Datum sortieren
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:
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
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

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
PB 5.73 LTS - Win 11 Pro / 64Bit