![]() |
Nach Datum Sortieren
Hi DP :hi: :hi: :hi: ,
Ich habe folgenden Code:
Delphi-Quellcode:
strlBilder := TStringList.Create;
FindFirst('*.jpg', faAnyFile, srBilder1); strlBilder.Add(srBilder1.Name); while FindNext(srBilder1) = 0 do begin strlBilder.Add(srBilder1.Name); // ShowMessage(''); end; FindClose(srBilder1); strlBilder.Sorted := false; strlBilder.CustomSort(@CompareDate); ![]() Allerdings funktioniert das nicht, und es gibt mindestens eine AV. Aber wie kann ich es sonst nach Datum in einer StringList sortieren? |
Re: Nach Datum Sortieren
Wo kommt welcher Fehler?
erstmal zum suchen der Dateien ... Frag dich mal was dein Code macht, wenn KEIN Bild gefunden wird :zwinker:
Delphi-Quellcode:
oder
strlBilder := TStringList.Create;
if FindFirst('*.jpg', faAnyFile, srBilder1) = 0 then begin strlBilder.Add(srBilder1.Name); while FindNext(srBilder1) = 0 do begin strlBilder.Add(srBilder1.Name); end; FindClose(srBilder1); strlBilder.Sorted := false; strlBilder.CustomSort(CompareDate);
Delphi-Quellcode:
Und dann ist in dem anderen Thread kein @ vor der Vergleichsfunktion.
strlBilder := TStringList.Create;
if FindFirst('*.jpg', faAnyFile, srBilder1) <> 0 then repeat strlBilder.Add(srBilder1.Name); until FindNext(srBilder1) <> 0; FindClose(srBilder1); strlBilder.Sorted := false; strlBilder.CustomSort(CompareDate); Aber besser und schneller sollte es gehen, wenn du direkt beim Eintragen in die Stringliste selber sortierst. FindFirst/FindNext liefert im SearchRec das Datum mit und über einen RecordArray, mit Datum und Name kann man da schöne Sachen machen. z.B.:
Delphi-Quellcode:
Var strlBilder: Array of Record
Name: String; Datum: irgendwas; End; |
Re: Nach Datum Sortieren
Hi,
ich hab den Queltext verändert:
Delphi-Quellcode:
Allerdings, woch ich strlBilder.CustomSort(CompareDate) aufrufe, kommt immer der Fehler Incompatible Types: 'Integer' and 'TValueRelationship'.
function CompareDate(List: TStringList; Index1, Index2: Integer):Integer;
var Val1, Val2: TDateTime; str1, str2: String; begin val1:= FileDateToDateTime(FileAge(list[Index1])); val2:= FileDateToDateTime(FileAge(list[Index2])); str1:= DateTimeToStr(val1); str2:= DateTimeToStr(val2); Result := CompareText(str1, str2); end; :gruebel: :wiejetzt: |
Re: Nach Datum Sortieren
Es ist nur ein Anfang, die Extras (Fehlerbehandlung, rekursive Suche, Speichern der Pfade,...) darfst du selbst übernehmen.
Delphi-Quellcode:
Gruß Hawkeye
function SortByDate (aList: TStringList; aIndex1, aIndex2: Integer): Integer;
begin Result := Integer(aList.Objects[aIndex1]) - Integer(aList.Objects[aIndex2]); end; procedure GetSortedFileList (const aMask: string; aList: TStrings); var code: Integer; SR: TSearchRec; L: TStringList; begin L := TStringList.Create; try L.Sorted := False; L.BeginUpdate; code := FindFirst(aMask, faAnyFile, SR); while (code = 0) do begin L.AddObject(SR.Name, TObject(SR.Time)); code := FindNext(SR); end; FindClose (SR); L.CustomSort (SortByDate); L.EndUpdate; aList.Assign (L); finally L.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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