Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TStringList absteigend sortieren (https://www.delphipraxis.net/170194-tstringlist-absteigend-sortieren.html)

XxnemesisxX49 4. Sep 2012 21:59

Delphi-Version: 7

TStringList absteigend sortieren
 
Guten Abend zusammen,

ich habe nun schon sämtliche Foren durchkämmt, doch finde keine Lösung für mein Problem.
Ich möchte Werte in einer TStringlist absteigend sortieren. Bisher habe ich es mit dem Code unten versucht, jedoch werden die Werte wie folgt sortiert:
22
20000
200
20
Code:
function StringListSortCompare(List: TStringList; Index1, Index2: integer): integer;
begin
  if List.CaseSensitive
    then Result := AnsiCompareStr(List[Index2], List[Index1])
    else Result := AnsiCompareText(List[Index2], List[Index1]);
end;
Ich hätte sie aber gerne so sortiert:
20000
200
22
20

Ich hoffe ihr könnt mir weiterhelfen und schon mal vielen Dank im Voraus :-D

Luckie 4. Sep 2012 22:12

AW: TStringList abwertend sortieren
 
Du vergleichst ja auch Zeichen und keine Ganzzahlen.

XxnemesisxX49 4. Sep 2012 22:14

AW: TStringList abwertend sortieren
 
Gibt es eine Möglichkeit ganze Zahlen zu vergleichen?

Luckie 4. Sep 2012 22:26

AW: TStringList abwertend sortieren
 
Klar. Mit <, > und =.

XxnemesisxX49 4. Sep 2012 22:35

AW: TStringList abwertend sortieren
 
Kann ich den Code, den ich gepostet hab, irgendwie so umändern, dass er tut was ich will :-D

himitsu 4. Sep 2012 22:39

AW: TStringList abwertend sortieren
 
Zitat:

Gibt es eine Möglichkeit ganze Zahlen zu vergleichen?
Ja, kann man.

z.B., wenn man vor dem Vergleich die Strings in Zahlen umwandelt. :roll:

Bjoerk 4. Sep 2012 22:39

AW: TStringList abwertend sortieren
 
Schau die an, welche Ergebnisse AnsiCompareStr liefert und schreib' die Function so um, daß du diese Ergebnisse hast, indem du StrToInt(List[Index1]) mit StrToInt(List[Index2]) vergleichst. Es gibt drei Fälle.

Delphi-Quellcode:
function Compare(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result:= ?;
  if StrToInt(List[Index1]) > StrToInt(List[Index2]) then
    Result:= ?
  else
    if StrToInt(List[Index1]) < StrToInt(List[Index2]) then
      Result:= ?;
end;

Jumpy 4. Sep 2012 22:40

AW: TStringList abwertend sortieren
 
Man könnte die Strings in der Lise in Zahlen umwandeln und vergleichen oder in(nerhalb) der Vergleichsfunktion links mit nullen auffüllen. Weiß nicht, ob's da einen Befehl für gibt, bei OracleSQL wär das LPAD.

himitsu 4. Sep 2012 22:53

AW: TStringList abwertend sortieren
 
Zitat:

Zitat von Bjoerk (Beitrag 1181589)
Schau die an, welche Ergebnisse AnsiCompareStr liefert und

Wobei in der OH auch drinsteht, welche Werte das Result dieses Delphi-Referenz durchsuchenTStringListSortCompare haben soll.

PS: Teilweise kennt Delphi auch noch andere Funktionen, welche soein Ergebnis liefern.
Delphi-Referenz durchsuchenCompareValue

XxnemesisxX49 4. Sep 2012 23:15

AW: TStringList abwertend sortieren
 
Juhu, es funktioniert, danke :-D

Ich hab noch eine Frage.
Wenn ich jetzt Zahlen mit Namen sortieren will, funktioniert die Methode nicht mehr, weil die Namen ja keine Integers sein können.
Bsp.:
2000 Peter
500 Hans
20 Alex

Gibt's da auch eine Lösung, die nicht all zu schwer ist? :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr.
Seite 1 von 4  1 23     Letzte »    

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