Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zahlen Sortieren in TListBox (https://www.delphipraxis.net/20722-zahlen-sortieren-tlistbox.html)

faux 22. Apr 2004 06:33


Zahlen Sortieren in TListBox
 
Hallo,

gibts eine Möglichkeit Zahlen in einer TListBox zu sortieren ohne das zu erziehlen:

1
11
5
51
9

sondern

1
5
9
11
51

Cuchulainn 22. Apr 2004 06:47

Re: Zahlen Sortieren in TListBox
 
Hallo,

du müsstest mit einem Sortieralgorithmus arbeiten. Da gibt es mehrere, z.B. BubbleSort oder InsertionSort. Sie sind auf dieser Seite gut erklärt: Delphiseiten
Sieh einfach unter Punkt 10.4. - Sortieralgorihmen nach.
Vielleicht gibt es eine einfachere Möglichkeit, aber die kenne ich dann nicht. Ich glaube es allerdings auch nicht.

s14 22. Apr 2004 06:49

Re: Zahlen Sortieren in TListBox
 
Hallo,
such mal im Forum nach Hier im Forum suchenzahlen sortieren Tlistbox

Muetze1 22. Apr 2004 08:41

Re: Zahlen Sortieren in TListBox
 
Moin!

Wenn du beim sortieren bisher immer sowas
Zitat:

Zitat von faux
1
11
5
51
9

schon erreichst hast, dann musst du deinen Sortiercode nur ein klein wenig umändern, weil dieser bisher die Strings vergleich anstatt der Zahlen an sich. Du musst beim Vergleich um beide Parameter ein StrToInt() rumschreiben und es sollte funktionieren...

MfG
Muetze1

faux 22. Apr 2004 15:11

Re: Zahlen Sortieren in TListBox
 
Zitat:

Zitat von Muetze1
...dann musst du deinen Sortiercode nur ein klein wenig umändern, weil dieser bisher die Strings vergleich anstatt der Zahlen an sich. Du musst beim Vergleich um beide Parameter ein StrToInt() rumschreiben und es sollte funktionieren...

MfG
Muetze1

Das ist nicht mein Sortieralgorithmus, sondern der Standardalgorithmus von Delphis TListBox

s14 22. Apr 2004 15:22

Re: Zahlen Sortieren in TListBox
 
Noch mal, hier ist die Lösung:

Hier im Forum suchensortieren TListbox Keine Fehlerbehandlung

StefanDP 22. Apr 2004 15:33

Re: Zahlen Sortieren in TListBox
 
nimm statt einer listbox eine listview und schreibe in die OnCompare:

Code:
procedure TForm1.ListViewCompare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
if StrToInt(Item1.Caption) < StrToInt(Item2.Caption) then
  Compare := 1
else
if StrToInt(Item1.Caption) > StrToInt(Item2.Caption) then
  Compare := -1
else
  Compare := 0;
end;
code getestet, wird in meinem aktuellen snakes-programm (highscoreliste) auch verwendet! :)
mfg
stefan

ggfan 22. Mär 2005 11:01

Re: Zahlen Sortieren in TListBox
 
Ich stell beider ListBox immer die Eigenschaft "sorted" auf True, dann
sortiert er es automaztisch, und ich muss gar nichts mehr tun.

Muetze1 22. Mär 2005 11:06

Re: Zahlen Sortieren in TListBox
 
Moin!

Bei Namen oder sonstigen ok, aber nicht bei Zahlen in dem Format wie faux sie gepostet hat - da nützt dir die Eigenschaft nix - und genau darum geht es. Wenn du dir die Beiträge durchgelesen hättest, dann wüsstest du dies...

MfG
Muetze1

ggfan 22. Mär 2005 15:50

Re: Zahlen Sortieren in TListBox
 
Sein Problem ist doch, dass die Zahlen unterschiedlich viele Stellen haben(1, 11, 5, 51 ,9). Wenn er es nun somacht:

01,
05,
09,
11,
51.

So mach ich das zumindest immer. Wenn er die Zahlen dann zurück in eine Integer umwandelt wahlen die Nullen dann wieder weg. Ist vielleicht nicht
elegant, funktioniert aber.

Muetze1 22. Mär 2005 16:01

Re: Zahlen Sortieren in TListBox
 
Moin!

Tja, er hats aber nunmal nicht so und ich würde nix auf der Oberfläche so hinbiegen so dass etwas funktioniert. Wenn ich in meinem Programm nicht ordentlich mit meinen Daten umgehen kann bzw. Probleme damit habe, dann werde ich dieses Manko nicht dadurch umgehen wollen, das ich die Formatierung an der Oberfläche ändere.

Vielleicht weiss er ja auch nichtmal wieviele Stellen die grösste Zahl hat? Wie würde es aussehen wenn man neue Zahlen hinzufügen kann und er bei Bedarf urplötzlich beim hinzufügen eine 0 mehr vor allen anderen Einträgen davorsetzt?

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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