AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi StringList "gruppiert" sortieren nach Ordnern und Dateinamen
Thema durchsuchen
Ansicht
Themen-Optionen

StringList "gruppiert" sortieren nach Ordnern und Dateinamen

Ein Thema von juergen · begonnen am 8. Jul 2009 · letzter Beitrag vom 8. Jul 2009
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#1

StringList "gruppiert" sortieren nach Ordnern und

  Alt 8. Jul 2009, 20:34
Hallo zusammen,

ich finde einfach keine Möglichkeit eine Listbox im virtuellen Style nach meinen Vorstellungen zu sortieren.
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? 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!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: StringList "gruppiert" sortieren nach Ordnern

  Alt 8. Jul 2009, 20:54
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: StringList "gruppiert" sortieren nach Ordnern

  Alt 8. Jul 2009, 21:33
@Luckie,
danke für deine Antwort.
Ich wußte das ich mich schlecht ausgedrückt hatte.
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
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: StringList "gruppiert" sortieren nach Ordnern

  Alt 8. Jul 2009, 21:52
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
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: StringList "gruppiert" sortieren nach Ordnern

  Alt 8. Jul 2009, 22:08
Hallo Hawkeye,

perfekt!
Ich hatte auch einiges probiert, aber auf soetwas "einfaches" bin ich nicht gekommen.
(ist ja oft so, im Nachinein schaut vieles ganz einfach aus...)
Vielen Dank und

Gute N8!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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