Delphi-PRAXiS
Seite 2 von 2     12   

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 22. Nov 2022 07:10

AW: Numerische höchster Stringwert
 
Moin Moin.

Ich habe jetzt wie vorgeschlagen die Zahlen aus den Dateinamen separiert und mit

FileNumbersList.CustomSort(SortStringListOfInteger );

sortiert.

Delphi-Quellcode:
function SortStringListOfInteger(List: TStringList; Index1, Index2: Integer): Integer;
var
  Value1, Value2: Integer;
begin
  Value1 := StrToInt(List[Index1]);
  Value2 := StrToInt(List[Index2]);
  if Value1 < Value2 then
    Result := -1
  else if Value2 < Value1 then
    Result := 1
  else
    Result := 0;
end;
Der Code ist mehrfach im Netz zu finden.

Was ich eben brauchte war Eure Hilfe um zu verstehen was ich machen muss bzw wonach man suchen kann.

Vielen Dank!!

creehawk

Gausi 22. Nov 2022 08:00

AW: Numerische höchster Stringwert
 
Verstehe ich das richtig? Du separierst aus der Original-Stringlist die Zahlen, packst diese in eine neue Stringlist, und sortierst diese, indem du die Strings darin zu Integer umwandelst? Kann man machen ... ist aber irgendwie von hinten durch die Brust ins Auge. :stupid:

So sollte es "direkt" gehen:
Delphi-Quellcode:
function SortStringListOfInteger(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := CompareString(LOCALE_USER_DEFAULT, SORT_STRINGSORT or SORT_DIGITSASNUMBERS, PChar(List[Index1]),
    Length(List[Index1]), PChar(List[Index2), Length(List[Index2)) - CSTR_EQUAL;
end;

himitsu 22. Nov 2022 09:26

AW: Numerische höchster Stringwert
 
Jupp, sollte es, da Windows ja das "Gleiche" schon fertig erledigt.

PS:
Delphi-Quellcode:
function SortStringListOfInteger(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := CompareValue(StrToInt(List[Index1]), StrToIntDef(List[Index2])); // StrToIntDef( ,0) oder ,MaxInt) oder ,MinInt) falls mal Fehler und keine Zahl drin
end;

Stevie 22. Nov 2022 15:07

AW: Numerische höchster Stringwert
 
Das ganze nennt sich übrigens natural sort order

Kann man auch StrCmpLogicalW für nutzen (zu finden in Winapi.ShLwApi.pas) - die ruft intern übrigens CompareString mit
Delphi-Quellcode:
NORM_IGNORECASE or SORT_DIGITSASNUMBERS
auf.

creehawk 22. Nov 2022 15:42

AW: Numerische höchster Stringwert
 
@gausi
Okay, von hinten durch die Brust ins Auge, kann man so sagen. Aber den Code verstehe ich ohne Probleme. Deine Lösung müsste ich erstmal ausgiebig ventilieren. Bin ich jetzt gerade zu faul für.... :duck:

@himitsu
.... und da ist die einfache Lösung. DAS war es was ich gesucht habe. Sehr schön. Vielen Dank. :-D

creehawk


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 Uhr.
Seite 2 von 2     12   

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