Moin!
Dein Code ist leider zu fragmenthaft, um damit was anfangen zu können. IMHO hast du gerade folgenes Problem:
- Du hast einen Vorgang, der Namen und Zahlen erzeugt (Spiel, Test, was auch immer)
- Du möchtest eine Bestenliste (Highscore) realisieren
- Du schreibst im Moment die Namen/Zahlen direkt in die Listbox (was auch immer), heißt, du benutzt die Komponente also faktisch zur Datenhaltung.
Korrekt bis hier?
Dann ist leider die zweite Variante doch die "bessere", weil du damit leichter das Datenspeicherproblem in den Griff kriegst.

Bei Variante a) brauchst du nämlich noch zusätzliche Datenstrukturen, und wenn du die nicht bereits jetzt schon im Programm hast, dann wäre das mehr Aufwand.
Ich zeig´s dir mal anhand eines ListViews: aaalso:
- ListView auf das Formular ziehen, falls nicht aktiviert, aktivieren (durch anklicken)
- ViewStyle auf vsReport setzen
- SortType auf stData
- Columns anklicken und auf den kleinen Button mit den Punkten klicken (Property-Editor öffnen)
- Auf das "Neu"-Symbol klicken (gelben Funkelzettel)
- Bei Caption der neuen Listenspalte "Name" eingeben
- Noch eine Spalte anlegen, Caption "Zeit" und Alignment "taRightJustify"
- Wieder das Listview anklicken, auf die Ereigniss-Seite im Inspector gehen
- Doppelklick auf "OnCompare", es wird ein Ereignishandler angelegt
- Folgenden Code reintun:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin if (Item1.Data = Item2.Data) then Compare := 0 else if (Integer(Item1.Data) > Integer(Item2.Data)) then Compare := 1 else Compare := -1; end; |
- Dann noch einen Button anlegen, um zum Testen neue Einträge zu erzeugen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var Zeit: Integer; begin with ListView1.Items.Add do begin Caption := 'Ich'; Zeit := Random(1000); SubItems.Add(IntToStr(Zeit)); Data := Pointer(Zeit); end; end; |
Schau mal, ob zu damit klar kommst. Du wirst feststellen, dass hier das automatische Sortieren super klappt!
Das ganze hat allerdings auch noch einen (kleinen) Nachteil: Du kannst nicht mehr so schön einfach mit .SaveToFile() den Inhalt speichern. Hier würde ich dir dann INI-Dateien empfehlen; such mal ein bischen hier im Forum danach, wenn´s gar nicht klappt, dann kannste dich ja nochmal melden.
cu
Narses