Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Objectlist sortieren (https://www.delphipraxis.net/189948-objectlist-sortieren.html)

michael.cohrs 11. Aug 2016 10:17

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

Stevie 11. Aug 2016 10:22

AW: Objectlist sortieren
 
Contnrs.TObjectList oder Generics.Collections.TObjectList<T>?

michael.cohrs 11. Aug 2016 10:24

AW: Objectlist sortieren
 
Hallo Stevie,

Contnrs.TObjectList

stahli 11. Aug 2016 10:34

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.)

michael.cohrs 11. Aug 2016 10:39

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!!!!

Stevie 11. Aug 2016 10:40

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);

michael.cohrs 11. Aug 2016 10:54

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

michael.cohrs 11. Aug 2016 10:55

AW: Objectlist sortieren
 
ich hole mir:

oArtVal := List[i] AS TMyVal

... und wie soll es dann weitergehen??

stahli 11. Aug 2016 11:24

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.

himitsu 11. Aug 2016 12:08

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 17:01 Uhr.
Seite 1 von 5  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