![]() |
TStringList Dateinamen sortierten, geht das besser?
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:
Geht sowas ohne viel Aufwand schöner?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; |
AW: TStringList Dateinamen sortierten, geht das besser?
Sorry, falsche Antwort… —-gelöscht—-
|
AW: TStringList Dateinamen sortierten, geht das besser?
![]() ![]() ![]() ![]() ![]() achja, Winapi.ShLwApi und TDirectory.GetFiles aus System.IOUtils |
AW: TStringList Dateinamen sortierten, geht das besser?
Ich habe das jetzt mal so übernommen, aber sind die Sort-Parameter coStringSort und coDigitAsNumbers richtig?
Delphi-Quellcode:
function NaturalCompareText(List: TStringList; Index1, Index2: Integer): Integer;
begin Result := string.Compare(List[Index1], List[Index2], [coStringSort, coDigitAsNumbers]); end; |
AW: TStringList Dateinamen sortierten, geht das besser?
Zitat:
Delphi-Quellcode:
bzw.
Sort
Delphi-Quellcode:
.
Sorted := True
Delphi-Quellcode:
type
TFileNameList = class(TStringList) protected function CompareStrings(const S1: string; const S2: string): Integer; override; end; function TFileNameList.CompareStrings(const S1, S2: string): Integer; begin Result := string.Compare(S1, S2, [coDigitAsNumbers]); // bei Bedarf noch weitere Optionen end; |
AW: TStringList Dateinamen sortierten, geht das besser?
Ich habe mich total verguckt ich hätte nach Datum sortieren sollen nicht nach Name. Hat sich erledigt sorry.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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