![]() |
StringList "gruppiert" sortieren nach Ordnern und
Hallo zusammen,
ich finde einfach keine Möglichkeit eine Listbox im virtuellen Style nach meinen Vorstellungen zu sortieren. :oops: Die Daten bestehen aus: Dateipfad + Dateiname + Dateiextansion Der Listbox werden dann die Daten von einer TStringList übergeben. Die einfache "Standard"-Sortierung könnte ja so ausschauen:
Delphi-Quellcode:
Aufruf...
function Sort_by_Folder(strings: TStringList; Index1, Index2: Integer): Integer;
begin Result := AnsiCompareText((strings[index1]), (strings[index2])) end;
Delphi-Quellcode:
Damit werden die Ordner korrekt sortiert, aber die Dateien aus dem "obersten" Ordner werden dannn alphabetisch eingeordnet und nicht zu dem obersten Ordner.
...
My_StringList_PfadUndDatei.CustomSort(Sort_by_Folder) ... Alles klar? :mrgreen: Mir fällt es etwas schwer das genau zu beschreiben, hoffe aber ihr versteht was ich meine. Im Prinzip müsste ich eine "gruppierte" Sortierung haben. Erst nach Ordnern und innerhalb der Ordner nach Dateinamen. Nur finde ich da überhaupt keinen Ansatz. Hat da jemand von euch den Lichtblick? Schon mal danke vorab! |
Re: StringList "gruppiert" sortieren nach Ordnern
Trenn die Liste vorher in Ordner und Dateien. Dann sortierst du beide Listen getrennt alphabetisch. Zum Schluss hängts du die Liste mit den Dateien einfach an die Liste mit den Ordner dran.
|
Re: StringList "gruppiert" sortieren nach Ordnern
@Luckie,
danke für deine Antwort. Ich wußte das ich mich schlecht ausgedrückt hatte. :oops: Ich möchte erst nach Ordnern sortieren und innerhalb der Ordner dann die dazugehörigen Dateien sortieren. Ansonsten werden die Dateien aus dem obersten Ordner alphabetisch mit den Ordern einsortiert und nicht unterhalb des obersten Ordners. Ich versuch es mal mit einem Beispiel, meine Datei schaut im Moment so aus: C:\A-ich bin eine Datei.txt C:\A-Ordner\A-ich bin die Datei 1.txt C:\A-Ordner\A-ich bin die Datei 2.txt C:\A-Ordner\A-ich bin die Datei 3.txt C:\B-Ordner\A-ich bin die Datei 1.txt C:\B-Ordner\A-ich bin die Datei 2.txt C:\B-Ordner\A-ich bin die Datei 3.txt C:\ich bin eine Datei.txt <----------------- diese Datei müsste oben an der 2. Position stehen C:\S-Ordner\A-ich bin die Datei 1.txt C:\S-Ordner\A-ich bin die Datei 2.txt C:\S-Ordner\A-ich bin die Datei 3.txt |
Re: StringList "gruppiert" sortieren nach Ordnern
Hallo Jürgen,
vielleicht funktioniert es so:
Delphi-Quellcode:
Gruß Hawkeye
function Sort_by_Folder(strings: TStringList; Index1, Index2: Integer): Integer;
var Name1, Name2 : string; begin Name1 := strings[Index1]; Name2 := strings[Index2]; Result := AnsiCompareText(ExtractFilePath(Name1), ExtractFilePath(Name2)); if (Result = 0) then Result := AnsiCompareText(ExtractFileName(Name1), ExtractFileName(Name2)); end; |
Re: StringList "gruppiert" sortieren nach Ordnern
Hallo Hawkeye,
perfekt! :thumb: Ich hatte auch einiges probiert, aber auf soetwas "einfaches" bin ich nicht gekommen. :oops: (ist ja oft so, im Nachinein schaut vieles ganz einfach aus...) Vielen Dank und Gute N8! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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