![]() |
Objectlist sortieren
Hallo zusammen,
ich habe echt noch niemals eine Objectlist sortiert also bitte verzeiht:? folgendes Problem: ich habe eine Objectlist in der ich eine Anzahl von n Objekten einfüge. All diese Objekte haben ein Integer Feld Namens ArtNr. wie kann ich die Objektliste nach diesem Feld sortieren? Danke für jede Hilfe und jeden Codesnipsel:) Viele Grüße Michael |
AW: Objectlist sortieren
Contnrs.TObjectList oder Generics.Collections.TObjectList<T>?
|
AW: Objectlist sortieren
Hallo Stevie,
Contnrs.TObjectList |
AW: Objectlist sortieren
Noch ein paar grundsätzliche Fragen:
- Wie viele Einträge kann die Liste haben? - Kommt es (falls die Liste groß werden kann) bei Suchen sehr auf Performance an? - Soll die Liste bei jedem neuen Eintrag sofort neu sortiert werden? - Könntest Du auf eine generische Liste umstellen? (Dies würde ich bei sortierten Listen empfehlen, wenn die Möglichkeit besteht.) |
AW: Objectlist sortieren
die Liste kann bis zu 10000 Einträge haben (ggf auch mehr)
nein die Performance ist egal die Liste soll nach dem Hinzufügen aller Datensätze neu sortiert werden die Möglichkeit einer generischen Liste habe ich nicht in diesem Projekt(leider) DANKE!!!! |
AW: Objectlist sortieren
Delphi-Quellcode:
function CompareItem(Item1, Item2: Pointer): Integer;
begin Result := Math.CompareValue(TMyObject(Item1).ArtNr, TMyObject(Item2).ArtNr); end; ... myList.Sort(CompareItem); |
AW: Objectlist sortieren
Danke Steve
aber ich kriegs irgendwie nicht hin, woher bekomme ich (TMyObject(Item1).ArtNr, TMyObject(Item2).ArtNr?? wenn ich mein Objekt aus der Objektliste hole dann habe ich doch nur 1 Objekt(TMyObject(Item1).ArtNr) aber noch nicht das 2te?? ohman ich peil es nicht |
AW: Objectlist sortieren
ich hole mir:
oArtVal := List[i] AS TMyVal ... und wie soll es dann weitergehen?? |
AW: Objectlist sortieren
Das übernimmt die Liste automatisch für Dich.
Du musst nur eine Funktion übergeben, die im Result -1 zurück gibt, wenn der erste Parameter kleiner ist als der zweite, bzw. 1, wenn er größer ist und 0 wenn beide gleich sind. Die Liste geht dann selbst durch ihre Einträge und sortiert sie. Also kannst Du hier viel einfacher denken. |
AW: Objectlist sortieren
Wenn man öfters sortiert, dann kann man die TList auch ableiten und die Sortierung direkt integrieren (override),
bzw. gleich eine Sortierte Liste verwenden, da geht dann das Suchen auch schneller. Einigen Listen kann man den Comparer auch direkt im Constructor mitgeben. Und falls man nur einmal an einer Stelle sortieren will und Delphi nicht zu alt ist, dann geht's eventuell auch anonym.
Delphi-Quellcode:
myList.Sort(function(Item1, Item2: Pointer): Integer;
begin Result := CompareValue(TMyObject(Item1).ArtNr, TMyObject(Item2).ArtNr); end); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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