![]() |
TObjectList
Mal ne dumme Frage, wie sortiert man eine TObjectList? Ich kenne den Befehl TObjeclist.Sort, doch wie verwendet man den? In meiner Liste gibt es nur Objekte einer Klasse. Diese Klasse hat einen Integer-Wert namens ID und nach den wollte ich sortieren.
|
Re: TObjectList
Zitat:
|
Re: TObjectList
Der Eintrag der D2005-Hilfe ist ja wirklich schrecklich, hier mal verständlicher von meinem guten alten D6:
Zitat:
|
Re: TObjectList
Das was aber von D6 Proffesional, was ich da oben geschickt habe...
|
Re: TObjectList
Nein, ich hatte vermutet, dass Taladan in seine D2005-Hilfe geschaut hat, daraus wird man wirklich nicht schlau:
Zitat:
|
Re: TObjectList
So nu hab ich folgendes gemacht, aber ich mach wohl irgendwas falsch
Delphi-Quellcode:
function CompareID(Item1, Item2: Pointer): Integer;
begin Result := CompareText((Item1 as TName).Name, (Item2 as TName).Name); end; procedure TNamenBox.HeaderControl1SectionClick(HeaderControl: THeaderControl; Section: THeaderSection); begin case Section.ID of 0: begin NamenList.Sort(@CompareID); end; end; end; |
Re: TObjectList
Delphi-Quellcode:
Da musst du nicht Name, sondern ID vergleichen.
function CompareID(Item1, Item2: Pointer): Integer;
begin Result := CompareText((Item1 as TName).Name, (Item2 as TName).Name); end |
Re: TObjectList
Ich grab den Thread mal wieder aus...
Ich möchte mit der hier beschriebenen Methode eine ObjectList sortieren, die mit Objekten der Klasse TPoint gefüllt ist.
Delphi-Quellcode:
Leider funktioniert das "as" an der Stelle nicht, Delphi gibt aus "E2015 Operator ist auf diesen Operandentyp nicht anwendbar". Was mache ich falsch?
//TPoint sieht so aus:
type Tpoint = class(TObject) x,y,z:double; t:double; end; //meine sortierfunktion folgendermaßen function sortpoints(Item1, Item2: Pointer): Integer; begin if(((Item1 as Tpoint).t) < ((Item2 as TPoint).t)) then Result := -1 else if(((Item1 as Tpoint).t) = ((Item2 as TPoint).t)) then Result := 0 else result:=1; end; |
Re: TObjectList
Gibt es vielleicht Überschneidungen der Klasse TPoint (die ist von dir)
und dem record TPoint (der wird von Delphi bereitgestellt)? Vielleicht benamst Du Deine Klasse um? Grüße Klaus |
Re: TObjectList
Delphi-Quellcode:
Pointer evtl dereferenzieren?
function sortpoints(Item1, Item2: Pointer): Integer;
begin if (((Item1^ as Tpoint).t) < ((Item2^ as TPoint).t)) then Result := -1 else if (((Item1^ as Tpoint).t) = ((Item2^ as TPoint).t)) then Result := 0 else Result := 1; end; Ja, klar, ist ja auch kein PRecord... (Auf 'TPoint als Klasse zu verwenden' muss man erstmal kommen) :shock: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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