Registriert seit: 25. Mai 2004
Ort: Wil Sg
193 Beiträge
|
Re: TList.sort(@nirvana) warum will TList.sort() nicht wie i
25. Apr 2006, 16:13
Ich habe mal eine nicht 100%ige Lösung. In diesem Beispiel kann die Zahl in der Spalte b höchstens 999 sein. Falls man aber weiss wie gross die Zahl höchstens sein wird, kann man bei dem "*1000" einen grösseren / kleineren faktor nehmen.
Delphi-Quellcode:
type
TItem = Record
a : Integer;
b : Integer;
end;
pItem = ^TItem;
...
var
List : TList;
function CompareValues(Item1 : Pointer; Item2 : Pointer) : Integer;
var
pItem1, pItem2 : pItem;
z1, z2 : integer;
begin
pItem1 := pItem(Item1);
pItem2 := pItem(Item2);
z1 := (pItem1^.a*1000)+pItem1^.b;
z2 := (pItem2^.a*1000)+pItem2^.b;
if z1 > z2
then Result := 1
else if z1 = z2
then Result := 0
else Result := -1;
end;
List.Sort(CompareValues);
Greetz
ArmyMan Reden ist Schweigen, Silber ist Gold!
Der Soldat friert nicht. Er zittert nur vor Wut, weil es so kalt ist.
|