![]() |
Delphi-Version: XE7
Dateinamen auslesen und sortieren
Hallo zusammen,
ich finde einfach keine "einfache" Lösung für folgendes Problem. Ich möchte Dateinamen aus einem Ordner auslesen und sortieren. Dazu habe ich einen Ordner mit CSV-Dateien. Folgende Dateien sind enthalten:
Und genau in dieser Reihenfolge möchte ich die Dateien gern weiterverwenden. Ich habe nun versucht die Dateinamen einzulesen und per Add in eine TStringList zu schreiben. Dann rutscht die Datei 2.12.csv aber vor die 2.3.csv. Also habe ich die TStringList.Sorted auf True gesetzt. Das Ergebnis bleibt das gleiche. Ich habe mich jetzt auch schon mit TStringList.CustomSort beschäftigt. Da steige ich aber nicht so richtig dahinter. Außerdem scheint mir das auch relativ aufwendig. Das Ergebnis muss auch nicht zwangsläufig in eine TStringList. Ich will eben nur die Dateien in der gleichen Reihenfolge verarbeiten wie sie mir im Windows-Explorer angezeigt werden. Hat jemand eine Idee wie das geht? |
AW: Dateinamen auslesen und sortieren
Ist hier etwas für Dich dabei?
![]() |
AW: Dateinamen auslesen und sortieren
Ich habe es wie beschrieben mit der Funktion in Verbindung mit CustomSort versucht.
Delphi-Quellcode:
Leider bleibt das Ergebnis das gleiche.
CompareString(LOCALE_USER_DEFAULT, SORT_STRINGSORT or SORT_DIGITSASNUMBERS, PChar(S1),
Length(S1), PChar(S2), Length(S2)) - CSTR_EQUAL; |
AW: Dateinamen auslesen und sortieren
Habe es nur mal rasch mit FreePascal probiert und stelle nichts falsches fest wenn ich es so mache:
Code:
program Project1;
uses SysUtils, Classes; function CompareProc(List: TStringList; Index1, Index2: Integer): Integer; begin Result := string.Compare(List[Index1], List[Index2], [coIgnoreCase]); end; var SL: TStringList; i: Integer; begin SL := TStringList.Create; try SL.Add('2.6.1.csv'); SL.Add('4.5.csv'); SL.Add('4.9.1.csv'); SL.Add('1.3.csv'); SL.Add('2.3.csv'); SL.Add('2.6.2.csv'); SL.Add('1.7.csv'); SL.Add('4.9.2.csv'); SL.Add('1.6.csv'); SL.Add('2.8.csv'); SL.Add('2.6.3.csv'); SL.Add('4.8.csv'); SL.Add('2.12.csv'); SL.CustomSort(@CompareProc); for i := 0 to Pred(SL.Count) do WriteLn(SL[i]); finally SL.Free; end; ReadLn; end. Zitat:
|
AW: Dateinamen auslesen und sortieren
Bei Delphi klappt es mit folgender function:
Delphi-Quellcode:
function SortCompare(List: TStringList; Index1, Index2: Integer): Integer;
begin Result := string.Compare(List[Index1], List[Index2], [coDigitAsNumbers, coIgnoreCase]); end; |
AW: Dateinamen auslesen und sortieren
Danke für die Antworten.
Ich habe es jetzt mit beiden Versionen probiert. Allerdings ohne Erfolg... |
AW: Dateinamen auslesen und sortieren
Quelltext der Versionen, Fehlermeldungen, Dateiliste, Ergebnis? ...wir haben keine Glaskugel. :zwinker:
|
AW: Dateinamen auslesen und sortieren
doch :glaskugel:
sorry, musste sein Mal provieren die Punkte durch was anderes zu Replacen. Nicht dass die Dortiermethode denkt intelligent zu sein und den . als Dezimaltrennzeichen ansieht, denn 1.14 ist als "eine Zahl" wirklich kleiner, als 1.2 |
AW: Dateinamen auslesen und sortieren
Zitat:
|
AW: Dateinamen auslesen und sortieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 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