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?