Einzelnen Beitrag anzeigen

Benutzerbild von ArmyMan
ArmyMan

Registriert seit: 25. Mai 2004
Ort: Wil Sg
193 Beiträge
 
#7

Re: TList.sort(@nirvana) warum will TList.sort() nicht wie i

  Alt 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.
  Mit Zitat antworten Zitat