Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StringList "gruppiert" sortieren nach Ordnern und Dateinamen (https://www.delphipraxis.net/136838-stringlist-gruppiert-sortieren-nach-ordnern-und-dateinamen.html)

juergen 8. Jul 2009 20:34


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:
function Sort_by_Folder(strings: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := AnsiCompareText((strings[index1]), (strings[index2]))
end;
Aufruf...
Delphi-Quellcode:
...
My_StringList_PfadUndDatei.CustomSort(Sort_by_Folder)
...
Damit werden die Ordner korrekt sortiert, aber die Dateien aus dem "obersten" Ordner werden dannn alphabetisch eingeordnet und nicht zu dem obersten Ordner.
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!

Luckie 8. Jul 2009 20:54

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.

juergen 8. Jul 2009 21:33

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

Hawkeye219 8. Jul 2009 21:52

Re: StringList "gruppiert" sortieren nach Ordnern
 
Hallo Jürgen,

vielleicht funktioniert es so:

Delphi-Quellcode:
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;
Gruß Hawkeye

juergen 8. Jul 2009 22:08

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 15:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz