AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TList.Sort Rückwärts?

Ein Thema von xZise · begonnen am 5. Aug 2009 · letzter Beitrag vom 14. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

TList.Sort Rückwärts?

  Alt 5. Aug 2009, 17:59
Hallo ihr,
kann man bei der TList auch rückwärts sortieren? Oder muss jedesmal eine neue Compare-Methode erstellen? Einmal für Vorwärts und einmal für Rückwärts?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 18:01
Zitat von xZise:
Oder muss jedesmal eine neue Compare-Methode erstellen? Einmal für Vorwärts und einmal für Rückwärts
Eine andere Möglichkeit ist mir persönlich nicht bekannt und sooo viel Aufwand ist das ja nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 18:08
Je nach dem wie du die Liste dann verwendest ist es vielleicht weniger Aufwand die Einträge einfach umgekehrt auszulesen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 18:18
Du kannst ja genau so gut vorwärts sortieren und rückwärts auslesen.

Sollte eigentlich kein Unterschied machen zu rückwärts sortieren und vorwärts auslesen.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 18:48
Zitat von SirThornberry:
Je nach dem wie du die Liste dann verwendest ist es vielleicht weniger Aufwand die Einträge einfach umgekehrt auszulesen.
Zitat von Die Muhkuh:
Du kannst ja genau so gut vorwärts sortieren und rückwärts auslesen.

Sollte eigentlich kein Unterschied machen zu rückwärts sortieren und vorwärts auslesen.
Jain. Für das Ergebnis nicht, aber dann müsste ich speichern, wie rum ich sortiert habe. Ansonsten kann ich einfach das andersherum sortieren lassen und nach außen hin ändert sich nix am Zugriff.

Zitat von DeddyH:
Zitat von xZise:
Oder muss jedesmal eine neue Compare-Methode erstellen? Einmal für Vorwärts und einmal für Rückwärts
Eine andere Möglichkeit ist mir persönlich nicht bekannt und sooo viel Aufwand ist das ja nicht.
Jain. Ich habe mindestens 4 Methoden die ich dann doppelt habe. Es ist zwar kaum Aufwand, aber das bläht doch alles etwas auf. Besonders, weil der Unterschied ja NUR ein Vorzeichen ist.

Naja schade.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#6

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 18:58
Zitat von xZise:
Zitat von Die Muhkuh:
Du kannst ja genau so gut vorwärts sortieren und rückwärts auslesen.

Sollte eigentlich kein Unterschied machen zu rückwärts sortieren und vorwärts auslesen.
Jain. Für das Ergebnis nicht, aber dann müsste ich speichern, wie rum ich sortiert habe.
Denkfehler: dann gerade nicht! (Du sortierst immer vorwärts - DAS kannst du dir hoffentlich merken. Beim Auslesen kannst du entscheiden ob vorwärts oder rückwärts).

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 19:09
du kannst dir ja in der Liste (evtl. im Tag?) die Richtung speichern und die Vergleichsprozeduren werten das aus und kehren notfalls einfach ihr Ergebnis noch schnell um, bevor sie sich beenden.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#8

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 19:17
Zitat von Reinhard Kern:
Zitat von xZise:
Zitat von Die Muhkuh:
Du kannst ja genau so gut vorwärts sortieren und rückwärts auslesen.

Sollte eigentlich kein Unterschied machen zu rückwärts sortieren und vorwärts auslesen.
Jain. Für das Ergebnis nicht, aber dann müsste ich speichern, wie rum ich sortiert habe.
Denkfehler: dann gerade nicht! (Du sortierst immer vorwärts - DAS kannst du dir hoffentlich merken. Beim Auslesen kannst du entscheiden ob vorwärts oder rückwärts).

Gruss Reinhard
Ehrm wo ist der Denkfehler? In den Einstellungen steht, dass nicht der neueste sondern älteste Eintrag genutzt werden soll. Also was mache ich:
Sort(<Datumsvergleichsfunktion>, Rückwärts) Das wars. Danach ist es mir egal, ob der neueste oder älteste Eintrag zuerst kommt. Ansonten müsste ich JEDESMAL wenn ich auf einen Eintrag zugreifen will:
Delphi-Quellcode:
if Rückwärts then
  Blabla := Items[Count - 1]
else
  Blabla := Items[0];
Zitat von himitsu:
du kannst dir ja in der Liste (evtl. im Tag?) die Richtung speichern und die Vergleichsprozeduren werten das aus und kehren notfalls einfach ihr Ergebnis noch schnell um, bevor sie sich beenden.
Naja TList hat kein Tag hat die schonmal nicht. Aber das "Problem" ist auch, dass dann die Einträge die Liste kennen müssen, weil dummerweise kann man keine Funktionen von Klassen benutzen.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 19:28
OK, dann ist das 'ne blöde Idee ... dachte die bekommt mit, welche TList zu den Einträgen gehört
Zitat:
(ist schon blöd, wenn die OH nicht läuft man da nicht mal nachsehn kann und auf die Idee mal in D7 zu gucken war ich och nicht gekommen )
aber dann bleibt dir wohl nichts anderes Übrig, als da noch weitere Sortierprozeduren zu erstellen
(eine "lobale" Gloabel variable, wo du extern die Richtung speicherst und das in den Prozeduren abfragst, wäre nicht so gut ... man hätte da zumindestens noch einen weiteren Parameter mit in die Funktion einbauen können, wo man dann noch zusätzliche infost übermitteln kann)

PS: oder du sortierst erstmal die Liste
und sortierst diese danach dann nochmal um, wenn es wückwärst ist
Delphi-Quellcode:
Liste.Sort(...);
if Rückwärts then
  for i := 0 to Liste.Count div 2 - 1 do begin
    P := Liste.Items[i];
    Liste.Items[i] := Liste.Items[Liste.Count - i];
    Liste.Items[Liste.Count - i] := P;
  end;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: TList.Sort Rückwärts?

  Alt 5. Aug 2009, 19:40
Zitat von himitsu:
OK, dann ist das 'ne blöde Idee ... dachte die bekommt mit, welche TList zu den Einträgen gehört
Zitat:
(ist schon blöd, wenn die OH nicht läuft man da nicht mal nachsehn kann und auf die Idee mal in D7 zu gucken war ich och nicht gekommen )
aber dann bleibt dir wohl nichts anderes Übrig, als da noch weitere Sortierprozeduren zu erstellen
(eine "lobale" Gloabel variable, wo du extern die Richtung speicherst und das in den Prozeduren abfragst, wäre nicht so gut ... man hätte da zumindestens noch einen weiteren Parameter mit in die Funktion einbauen können, wo man dann noch zusätzliche infost übermitteln kann)
Ja genau Das hatte ich auch nicht vor. Und joar, also .Sort ist an sich ganz genial gemacht, aber das ist "Verbesserungswürdig" (z.B. ein "of object" dürfte helfen ^^ Oder intern eine Rückwärtsfunktion, dass dies nicht im Vergleich entschieden werden muss).

Zitat von himitsu:
PS: oder du sortierst erstmal die Liste
und sortierst diese danach dann nochmal um, wenn es wückwärst ist
Delphi-Quellcode:
Liste.Sort(...);
if Rückwärts then
  for i := 0 to Liste.Count div 2 - 1 do begin
    P := Liste.Items[i];
    Liste.Items[i] := Liste.Items[Liste.Count - i];
    Liste.Items[Liste.Count - i] := P;
  end;
Jeha :mrgeen: , ich glaube ich bleibe bei zwei Methoden pro Typ.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:40 Uhr.
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