Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

TStringList Dateinamen sortierten, geht das besser?

  Alt 18. Aug 2022, 18:14
Ich habe eine StringList und lese mit FindFirst/FindNext Dateien nicht-rekursiv eines Verzeichnisses aus.
Die Dateinamen in der Liste sind anders als die im Windows-Explorer nicht sortiert. Sorted und Sort der StringList bringt nix.

Dateinamen 1 bis 15 ergibt mit Sorted und Sort dann sowas wie 1, 10, 11..15, 2, 3 usw.

Meine Idee jetzt
Delphi-Quellcode:

function StrCmpLogicalW(const psz1, psz2: PWideChar): Integer; stdcall; external 'Shlwapi.dll';

var
 FormMain: TFormMain;

implementation

function CustomSort(List: TStringList; Index1, Index2: Integer): Integer;
begin
 Result := StrCmpLogicalW(PChar(List[Index1]), PChar(List[Index2]));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 sl: TStringList;
begin
 sl := TStringList.Create;
 try
  GetFilesInDirectory('TEST\', '*.*', sl, False);
  sl.CustomSort(CustomSort);
  showmessage(sl.Text);
 finally
  sl.Free;
 end;
end;
Geht sowas ohne viel Aufwand schöner?
  Mit Zitat antworten Zitat