Ich ermittle einige PDF-Dateien und sortiere die nach dem Erstellungsdatum.
Das funktioniert, ich bin aber nicht sicher, ob ich die einfachste Lösung habe.
Würde es jemand anders machen?
Muss nicht mit Generics sein. Würde eine anonyme Methode etwas vereinfachen?
Delphi-Quellcode:
type
TsrComparer = class(TComparer<TSearchRec>)
function Compare(const sr1, sr2: TSearchRec): Integer; override;
end;
implementation
{ TMeleePairComparer }
function TsrComparer.Compare(const sr1, sr2: TSearchRec): Integer;
begin
Result := 0;
if Result = 0 then
Result := -CompareValue(sr1.TimeStamp, sr2.TimeStamp);
if Result = 0 then
Result := CompareStr(sr1.Name, sr2.Name);
end;
...
procedure TFormOlympic.TabSheetReportShow(Sender: TObject);
procedure GetFiles;
var
sr: TSearchRec;
srList: TList<TSearchRec>;
F: Boolean; // ergänzt
begin
srList := TList<TSearchRec>.Create(TsrComparer.Create);
if PathReport <> '' then
begin
F := FindFirst(PathReport + '*.pdf', (faAnyFile and not faDirectory), sr);
while F = 0 do
begin
if ExtractFileExt(sr.Name) = '.pdf' then
srList.Add(sr);
F := FindNext(sr);
end;
FindClose(sr);
end;
srList.Sort;
ListBoxReport.Clear;
for sr in srList do
ListBoxReport.Items.Add(sr.Name);
FreeAndNil(srList);
end;
begin
GetFiles;
ListBoxReport.ItemIndex := 0;
ListBoxReportClick(Sender);
end;
PS: Auf ein TsShellListView (AlphaControls) hatte ich verzichtet, da ein umsortieren dort nicht möglich war.