AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Objectlist sortieren

Ein Thema von michael.cohrs · begonnen am 11. Aug 2016 · letzter Beitrag vom 12. Aug 2016
Antwort Antwort
Seite 1 von 5  1 23     Letzte » 
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#1

Objectlist sortieren

  Alt 11. Aug 2016, 10:17
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
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.898 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Objectlist sortieren

  Alt 11. Aug 2016, 10:22
Contnrs.TObjectList oder Generics.Collections.TObjectList<T>?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#3

AW: Objectlist sortieren

  Alt 11. Aug 2016, 10:24
Hallo Stevie,

Contnrs.TObjectList
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Objectlist sortieren

  Alt 11. Aug 2016, 10:34
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.)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (11. Aug 2016 um 10:46 Uhr)
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#5

AW: Objectlist sortieren

  Alt 11. Aug 2016, 10:39
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!!!!
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.898 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Objectlist sortieren

  Alt 11. Aug 2016, 10:40
Delphi-Quellcode:
function CompareItem(Item1, Item2: Pointer): Integer;
begin
  Result := Math.CompareValue(TMyObject(Item1).ArtNr, TMyObject(Item2).ArtNr);
end;

...
myList.Sort(CompareItem);
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (11. Aug 2016 um 10:43 Uhr)
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#7

AW: Objectlist sortieren

  Alt 11. Aug 2016, 10:54
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
  Mit Zitat antworten Zitat
michael.cohrs

Registriert seit: 11. Nov 2005
Ort: Hamburg
130 Beiträge
 
#8

AW: Objectlist sortieren

  Alt 11. Aug 2016, 10:55
ich hole mir:

oArtVal := List[i] AS TMyVal

... und wie soll es dann weitergehen??
Michael Cohrs
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.277 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Objectlist sortieren

  Alt 11. Aug 2016, 11:24
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.453 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Objectlist sortieren

  Alt 11. Aug 2016, 12:08
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);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf