2017-02-03 3 views
-3

Im Moment sortiert Delphi meine Elemente in einer FileListBox nach alphabetischer Reihenfolge und der Länge der Datei.Delphi 7 | Sortieren von FileListBox-Elementen

Gibt es eine Möglichkeit, die Artikel nur in alphabetischer Reihenfolge anzuordnen?

+0

Was ist der Unterschied? Abgesehen davon, dass Ihre Anfrage eine zufällige Reihenfolge zwischen Fred und Fred1 geben würde. Was ist der Sinn? Ich vermute, dass Sie wollen, dass sie in ihrer ursprünglichen Reihenfolge bleiben, aber dass sie gleich sind, garantiert das nicht. – Dsm

+0

Was meinst du mit * alphabetischer Reihenfolge und der Länge der Datei *? Wie wirkt sich die Länge auf die Sortierreihenfolge aus? –

+0

Das macht keinen Sinn. In jedem Fall sollten Sie keine Steuerelemente für Dateilistenfelder verwenden. Verwenden Sie eine ordnungsgemäße Shell-Listenansicht. –

Antwort

-1

Ich kann Ihnen eine langatmige Erklärung geben, warum es tut, was es tut (Verweis auf numerische String-Sortierung und die alten DOS-Verzeichnis-Walking-Routinen, die FileListBox verwendet), aber das ist wahrscheinlich in diesem Zusammenhang übertrieben.

Die kurze Antwort ist: Sie müssen es so sortieren, wie Sie es wollen; was im Fall von FileListBox wahrscheinlich bedeutet, dass Sie eine Nachfahrenklasse erstellen müssen, die die virtuelle ReadFileNames-Methode überschreibt und die Dateien liest und sortiert, wie Sie es bevorzugen.

Eine einfachere Möglichkeit, denselben Effekt zu erzielen, ohne sich an der Erstellung einer neuen Komponente zu schämen, wäre der Wechsel zum TShellListView-Steuerelement, das das Verhalten von Windows Explorer besser emuliert.

HTH

+0

Keine langwierige Erklärung oder DOS. Es ist in einfacher lexikographischer Reihenfolge geordnet. Sicher schätzen Sie, dass '11' <'2' in der gleichen Weise wie 'aa' <'b' –

+0

Ja; Der Punkt, den ich machte (oder versuchte, vielleicht nicht klar zu machen), war, dass ASCII-lexikographisches Sortieren genau das ist, was man mit den traditionellen DOS-basierten Dateinamen-Abrufroutinen erhält. Um etwas anderes zu bekommen, musst du deine eigene Sorte machen. Wenn Sie Windows-Shell-basierte Routinen verwenden, erhalten Sie etwas, das dem ähnelt, was Sie im Explorer sehen, und das ist es, was das OP erwartet und erwartet. – user44760