![]() |
Numerische höchster Stringwert
Eine Stringliste von Dateinamen, die via
Delphi-Quellcode:
bringt das FileList.text Ergebnis:
FileList := TSTringlist.create;
begin if FindFirst(DERPath + '*.*', faAnyFile, SR) = 0 then begin repeat if (SR.Attr <> faDirectory) then begin FileList.Add(SR.Name); end; until FindNext(SR) <> 0; FindClose(SR); end; end;
Code:
Ich brauche die numerisch höchsten Dateinamen, was in dieser Liste die «sgm25.der» wäre. Wir kriege ich die?
sgm1.der
sgm11.der sgm12.der sgm17.der sgm22.der sgm25.der sgm3.der sgm4.der sgm9.der creehawk |
AW: Numerische höchster Stringwert
Wobei genau klemmt es? |
AW: Numerische höchster Stringwert
Heißen die Dateien immer so sgmX.der?
|
AW: Numerische höchster Stringwert
@Der schöne Günther
Okay, versteh ich natürlich, ich dachte es gibt was "Eingebautes".....:| @jumpy Ja die Dateien heißen immer so, ist in Messwerte Format. creehawk |
AW: Numerische höchster Stringwert
Zitat:
Beispiele: ![]() |
AW: Numerische höchster Stringwert
Warun 25 und nicht 91?
|
AW: Numerische höchster Stringwert
@Uwe Raabe
Hast recht, die 91 bzw. 33 gehörten da nicht rein, habe ich mal rausgenommen. Ich hatte eigentlich ein Sortierdingens für eine Stringlist im Auge die diese List eben schlicht in der richtigen Reihenfolge wie z.B. der Explorer anzeigt. creehawk |
AW: Numerische höchster Stringwert
Dafür musst du eine passende Compare-Funktion nehmen. Wie das genau mit StringList und CustomSort dort geht, weiß ich auf Anhieb nicht. In meinem Player nutze ich für meine String-Properties der Objekte in den ObjectLists sowas:
Delphi-Quellcode:
Relevant ist hier das Flag SORT_DIGITSASNUMBERS. Die Syntax der Compare-Funktion muss für StringListen ggf. etwas angepasst werden.
function AnsiCompareText_Numbers(const S1, S2: string): Integer;
begin Result := CompareString(LOCALE_USER_DEFAULT, SORT_STRINGSORT or SORT_DIGITSASNUMBERS, PChar(S1), Length(S1), PChar(S2), Length(S2)) - CSTR_EQUAL; end; |
AW: Numerische höchster Stringwert
Zitat:
Wenn Deine Dateien für eine Sortierung korrekt benannt wären, würden die auch so dargestellt werden wie Du es eigentlich möchtest. (sgm001, sgm002 etc...) Soll heißen, durchforste Deine Liste nach dem längsten string und füge dann nullen hinter sgm ein um mit der längsten länge gleich zu sein. |
AW: Numerische höchster Stringwert
Wozu?
SORT_DIGITSASNUMBERS macht das, was gewollt ist. Im Gunde zerlegt es den String in seine Einzelteile "Zahlen" und "Anderes" und sortiert die Teile entsprechens, also Zahlen wie Zahlen und nicht als String, wobei führende Nullen egal sind (außer die Zahlenwerte sind gleich, dann nochmal als String) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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