Hej
Jeg har en TList med flere fields i hver record.
Hvordan kan jeg sikre, at jeg kan sortere på mere end "hoved-"Item? Hvis flere Items har samme indhold vil jeg gerne have at et sekundært-Item også tages med i sorteringen.
Jeg kan naturligvis løbe TListen igennem og per håndkraft sortere på det sekundære Item. Men er det en egenskab i TList, eller noget jeg har overset, der gør at jeg kan sortere på et sekundært Item også?
Godt Nytår
Mik
Hej Mik,
Du skal selv sammenligne dine elementer vha. en "compare" funktion. Dette betyder at du også selv skal implementere sorteringen efter det sekundære index.
Det kunne f.eks. gøres på følgende måde (indeholder compare funktionen samt den record som TList forventes at indeholde):
type
TMyRecord = record
Name : String;
Age : Integer;
end;
PMyRecord = ^TMyRecord;
function CompareMyRecord(Item1, Item2: Pointer): Integer;
begin
Result := CompareText(PMyRecord(Item1)^.Name, PMyRecord(Item2)^.Name);
if Result = 0 then
Result := PMyRecord(Item1)^.Age-PMyRecord(Item2)^.Age;
end;
Håber det hjælper,
/Michael.
[Redigeret d. 29/12-03 22:55:12 af Michael Skovslund]