![]() |
TList sortieren
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 |
Re: TList sortieren
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:
Aus der Delphi-Hilfe ;-)
function CompareNames(Item1, Item2: Pointer): Integer;
begin Result := CompareText((Item1 as TComponent).Name, (Item2 as TComponent).Name); end; |
Re: TList sortieren
Du brauchst zuerst eine Vergleichsfunktion die Delphi sagt welcher von zwei Records kleiner ist:
Delphi-Quellcode:
Diese Funktion übergibst du dann an die Methode Sort:
function Compare(Item1, Item2: Pointer): Integer;
begin Result := Item2^.wert2 - Item1^.wert1; end;
Delphi-Quellcode:
P.S.: Wenn du das nächste Mal delphi-Tags setzt lässt sich der Code leichter lesen.
MyList.Sort(Compare);
|
Re: TList sortieren
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:
Das Problem ist, dass der as operator nicht mit Pointer funktioniert. Ergo auch das Beispiel funktioniert nicht.
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; 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 |
Re: TList sortieren
anstelle von
Delphi-Quellcode:
einfach
(Pointer as Class)
Delphi-Quellcode:
class(Pointer)
|
Re: TList sortieren
Thx
klappt jetzt. Manchmal sieht man den Wald vor lauter bäumen nicht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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