![]() |
zuletzt geänderte Datei finden
Hallo,
also, ich habe einenn Odner mit Dateien die in etwa alle so heißen: abc_14_12_2006 16_20_16.txt abc_14_12_2006 13_22_18.txt abc_10_07_2006 12_20_16.txt ... Nun möchte ich aus diesen Dateien möglichst schnell die finden, die die neuste ist. Muss ich da jede mit jeder vergeleichen oder gibt es da eine schnellere Variante? Der Explorer kann die Dateien ja auch schön nach letzter Änderung sortieren, aber via Delphi?? Danke Tim |
Re: zuletzt geänderte Datei finden
Hallo,
ich habe mal etwas ähnlichers gemacht. Lesen der Dateien mir "findFirst" und "FindNext" Danach habe ich die Dateiattribute gelesen "FileGetAttr" und nach Zeit sortiert. Fertig. |
Re: zuletzt geänderte Datei finden
So also folgende Funktion liefert mir erstmal alle Dateien eines Ordners, das klappt soweit...
Delphi-Quellcode:
function allFiles(Verzeichnis, Endung: string): TStringList;
var SR : TSearchRec; begin result:= TStringList.Create; if Verzeichnis[length(Verzeichnis)]<>'\' then Verzeichnis:=Verzeichnis+'\'; if FindFirst(Verzeichnis+Endung,$3F,SR)=0 then begin repeat if (SR.Name<>'.') and (SR.Name<>'..') and (SR.Attr<>faDirectory) then result.Add(SR.Name); until FindNext(SR)<>0; FindClose(SR); end; end; ...aber wie nun nach Zeit sortieren? |
Re: zuletzt geänderte Datei finden
Wenn es nicht um Sortierung geht, sondern nur darum, herauszufinden, welche Datei zuletzt geändert wurde, kannst Du es mal hiermit versuchen (schnell getippselt, kann noch Fehler enthalten):
Delphi-Quellcode:
function FindLatestModified(sPath: string): string;
var Data: TWin32FindData; LastModified: TDateTime; sTime: TSystemTime; FindHandle: Cardinal; begin LastModified := 0; Result := ''; sPath := IncludeTrailingPathDelimiter(sPath); FindHandle := FindFirstFile(PChar(sPath + '*.*'),Data); if FindHandle <> INVALID_HANDLE_VALUE then begin repeat if ((Data.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0) then begin FileTimeToSystemTime(Data.ftLastWriteTime,sTime); if (SystemTimeToDateTime(sTime) > LastModified) then begin LastModified := SystemTimeToDateTime(sTime); Result := Data.cFileName; end; end; until not FindNextFile(FindHandle,Data); Windows.FindClose(FindHandle); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz