AGB  ·  Datenschutz  ·  Impressum  







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

TList sortieren

Ein Thema von crossmaen · begonnen am 12. Mai 2004 · letzter Beitrag vom 15. Mai 2004
Antwort Antwort
crossmaen

Registriert seit: 1. Mär 2004
Ort: nähe Freiburg
9 Beiträge
 
#1

TList sortieren

  Alt 12. Mai 2004, 10:26
Hallo!

Ich hab zwar schon in der DH nachgeschaut, kam da aber nicht weiter. Ich weiß zumindest schon soviel, dass es eine Methode von TList gibt (sort). Aber wie rufe ich die auf?

MyList.Sort(--->was kommt hier rein???<---);

Meine Liste sieht so aus:

MYlist: TList;

PAufenthalt = ^TAufenthalt;
TAufenthalt = record
wert1,wert2,wert3,wert4,..wert21 end;

nun möchte ich absteigend nach wert2 die Liste sortieren, also die aufenthalte in die richtige reihenfolge bringen.

Kann mir da jemand helfen??

Vielen Dank

Crossmaen
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2

Re: TList sortieren

  Alt 12. Mai 2004, 10:50
Zum Thema Sortieren wirst du hier mehr als fündig

Das Argument von Sort ist eine Vergleichsfunktion, mit der du die eigentlich sortierung verändern kannst...

Edit: Hiermit kannst du eine Liste alphabethisch sortieren lassen:
Delphi-Quellcode:
function CompareNames(Item1, Item2: Pointer): Integer;
begin
  Result := CompareText((Item1 as TComponent).Name, (Item2 as TComponent).Name);
end;
Aus der Delphi-Hilfe
Alexander
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TList sortieren

  Alt 12. Mai 2004, 10:51
Du brauchst zuerst eine Vergleichsfunktion die Delphi sagt welcher von zwei Records kleiner ist:
Delphi-Quellcode:
function Compare(Item1, Item2: Pointer): Integer;
begin
  Result := Item2^.wert2 - Item1^.wert1;
end;
Diese Funktion übergibst du dann an die Methode Sort:
MyList.Sort(Compare); P.S.: Wenn du das nächste Mal delphi-Tags setzt lässt sich der Code leichter lesen.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
st-matze

Registriert seit: 15. Mai 2004
6 Beiträge
 
#4

Re: TList sortieren

  Alt 15. Mai 2004, 19:13
Moin,moin!

Ich möcht mich hier auch noch mal einklinken. Mit der Compare-Methode von TList habe ich ein kleines Problem.

Es gibt ja das schöne Beispiel aus der Hilfe:

Delphi-Quellcode:
function CompareNames(Item1, Item2: Pointer): Integer;
begin
  Result := CompareText((Item1 as TComponent).Name, (Item2 as TComponent).Name);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  List1.Sort(@CompareText);
end;
Das Problem ist, dass der as operator nicht mit Pointer funktioniert. Ergo auch das Beispiel funktioniert nicht.
Kann mir jemand sagen wie ich einen Pointer-Inhalt auf eine Klasse casten kann?
Ansonsten kann ich nicht auf die Inhalte des Pointers zugreifen.

Irgendwie benötige ich die funktionalität : (Pointer as Class)

MfG
st-matze
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: TList sortieren

  Alt 15. Mai 2004, 19:22
anstelle von
(Pointer as Class) einfach
class(Pointer)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
st-matze

Registriert seit: 15. Mai 2004
6 Beiträge
 
#6

Re: TList sortieren

  Alt 15. Mai 2004, 19:27
Thx

klappt jetzt.

Manchmal sieht man den Wald vor lauter bäumen nicht
  Mit Zitat antworten Zitat
Antwort Antwort


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 14: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