Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Numerische höchster Stringwert (https://www.delphipraxis.net/211914-numerische-hoechster-stringwert.html)

creehawk 21. Nov 2022 10:15

Numerische höchster Stringwert
 
Eine Stringliste von Dateinamen, die via

Delphi-Quellcode:
  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;
bringt das FileList.text Ergebnis:
Code:
  sgm1.der
  sgm11.der
  sgm12.der
  sgm17.der
  sgm22.der
  sgm25.der
  sgm3.der
  sgm4.der
  sgm9.der
Ich brauche die numerisch höchsten Dateinamen, was in dieser Liste die «sgm25.der» wäre. Wir kriege ich die?

creehawk

Der schöne Günther 21. Nov 2022 10:20

AW: Numerische höchster Stringwert
 
  1. Übung: Extrahiere die Zahl (Integer) aus dem String
  2. Mache aus der String-Liste ein Zahlen-Array
  3. Sortiere das Array absteigend
  4. Gebe den Wert von
    Delphi-Quellcode:
    meineZahlen[0]
    zurück

Wobei genau klemmt es?

Jumpy 21. Nov 2022 10:22

AW: Numerische höchster Stringwert
 
Heißen die Dateien immer so sgmX.der?

creehawk 21. Nov 2022 10:38

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

haentschman 21. Nov 2022 11:06

AW: Numerische höchster Stringwert
 
Zitat:

ich dachte es gibt was "Eingebautes
Jo...regex. 8-)

Beispiele:
https://www.google.de/search?q=regex...client=gws-wiz

Uwe Raabe 21. Nov 2022 12:02

AW: Numerische höchster Stringwert
 
Warun 25 und nicht 91?

creehawk 21. Nov 2022 14:11

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

Gausi 21. Nov 2022 15:17

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:
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;
Relevant ist hier das Flag SORT_DIGITSASNUMBERS. Die Syntax der Compare-Funktion muss für StringListen ggf. etwas angepasst werden.

KodeZwerg 21. Nov 2022 23:01

AW: Numerische höchster Stringwert
 
Zitat:

Zitat von creehawk (Beitrag 1515129)
@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

Der Explorer zeigt es doch genau so an wie Du es geschrieben hast.
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.

himitsu 21. Nov 2022 23:36

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 13:52 Uhr.
Seite 1 von 2  1 2      

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