AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi verschiedene Objektlisten schnell sortieren und filtern
Thema durchsuchen
Ansicht
Themen-Optionen

verschiedene Objektlisten schnell sortieren und filtern

Ein Thema von stahli · begonnen am 24. Jun 2013 · letzter Beitrag vom 2. Jul 2013
 
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#1

verschiedene Objektlisten schnell sortieren und filtern

  Alt 24. Jun 2013, 20:26
Gesetzt den Fall, ich habe mehrere Listen mit verschiedenen Objekten.
- Personenliste
- Adressliste
- Autoliste

Die Objekte verwalten dann u.a. ggf. Instanzen auf andere Objekte.
Z.B. unterhält eine Person eine Liste von Autos (real eine Liste von Id´s, die dann zur Laufzeit bei Bedarf zur Objektbeschaffung (GetAuto(Id) ) genutzt werden).

Nun möchte ich alle Listen unterschiedlich sortieren können (bzw. dies dem User ermöglichen).
Suchen und sortieren realisiere ich derzeit erst mal über BinarySearch mit einem Comparer, der sich derzeit nur auf die ID bezieht:
Delphi-Quellcode:
function TssObjectComparer.Compare(const O1, O2: TssObject): Integer;
begin
  Result := CompareStr(O1.Id, O2.Id);
end;

...

procedure TssIO_Custom.RegisterObject(ssObj: TssObject);
var
  Index: Integer;
begin
  if not Assigned(ssObj) then
    Exit;
  if not ssObjectList.BinarySearch(ssObj, Index) then
    ssObjectList.Insert(Index, ssObj);
end;

Wenn ich jetzt nach anderen Eigenschaften sortieren/suchen/filtern will (z.B. Person.FirstName(aufsteigend) UND Person.LastName(absteigend)) und beliebigen sonstigen Varianten, wie realisiert man das am besten?
Für jeden Sortierfall eine eigene Liste mit eigenem Comparer?
Man muss dann natürlich jeden Einfüge- und Löschvorgang für eine Objektmenge für mehrere Listen durchführen.
Ist das als zweckmäßig und sicher anzusehen? Der Speicherverbrauch ist natürlich auch höher.

Der umfangreichere Quelltext wäre nicht das Problem, da dieser durch einen Experten erzeugt wird.
Ich müsste dann in den Metadaten nur definieren, welche "Indizes" benötigt werden.

Alternativ könnte man eine Liste immer umsortieren, was allerdings bei größeren Listen dann etwas dauern kann.

Ein Problem ist z.B. auch, wenn ich alle Personen suchen will, deren Adressobjekt den Ort "Halle" beinhaltet.
Das ist wohl dann der Nachteil gegenüber einer SQL-Abfrage.


Grundsätzlich will ich das dann so organisieren, dass alternativ zu Objektlisten ein ORM verwendet werden kann.
In dem Fall würde die Sortierung/Filterung dann über SQL realisiert.
Für die Anwendung soll sich dann keine Änderung ergeben, egal ob die Daten in Objektlisten oder über einen ORM verwaltet werden.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
 


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 06:32 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