Wer kann mir sagen, was ich tun muß, um bei einer class(TList) sortieren zu können?
Ganz allgemein habe ich:
Code: Alles auswählen
Type
PM = ^TM;
TM = Record / Object / Class
< irgendwas >
end;
TMList = class(TList)
private
function GetItem(idx:integer):PM;
procedure SetItem(idx:integer; M: PM);
public
ListCompare: TListSortCompare;
property Item[idx:integer]: PM read GetItem write SetItem;
function AddItem: PM;
procedure DeleteItem(idx:integer);
procedure sort(compare: TListSortCompare);
// TYPE TListSortCompare = function (Item1, Item2: Pointer): Integer; -> Unit classes
Function CompareM(item1,item2:Pointer):integer;
end;
Code: Alles auswählen
procedure TMList.Sort(compare:TListSortCompare);
begin inherited sort(compare); end;
function TMList.GetItem(idx:integer):PM;
begin Result := PM(inherited Get(idx)); end;
procedure TMList.SetItem(idx:integer; M: PM);
begin inherited Put(idx, M); end;
Function TMLIst.AddItem: PM;
begin new(result); inherited add(result); end;
Procedure TMList.DeleteItem(idx:integer);
begin dispose(item[idx]; inherited; end;
function TMList.CompareM(item1,item1:Pointer):integer;
begin
end;
Wäre es vielleicht einfacher, ein array of record / object / class zu nehmen und dann nur mit Zeigern auf diese einzelnen array-Elemente zu arbeiten? dann würde eine Prozedur Sort genügen, mit einer schon "eingebauten" Vergleichsfunktion, die damit von vornherein aufgerufen wird.
Oder ist das gehupft wie gesprungen?
Was mache ich verkehrt?
Herzlichen Dank!