[fpc-pascal] TSortedCollection dupes ordering

Jim Leonard trixter at oldskool.org
Thu Feb 6 01:48:25 CET 2014


On 2/5/2014 5:24 PM, waldo kitty wrote:
> i'm unsure what to do or how to handle this so that there is a secondary
> (sub) sorting order so that the main key is the master sort and then a
> secondary ""key"" is used when duplicates are allowed...

You put both key comparisons in the same .Compare function.

In one of my Turbo Pascal projects, I used this:

PSystems=^TSystems;
TSystems=object(TSortedCollection)
   function Compare(Key1, Key2: Pointer): Integer; virtual;
   function GetSize:longint;
end;

...

Function TSystems.Compare;

begin
   if PSystem(Key1)^.score < PSystem(Key2)^.score
     then Compare := -1
     else if PSystem(Key1)^.score > PSystem(Key2)^.score
       then Compare := 1
       {Score is the same.  Second search key (larger numbers are worse:}
       else if usectotal(Key1) > usectotal(Key2)
         then Compare := -1
         else if usectotal(Key1) < usectotal(Key2)
           then Compare := 1
           {usec totals same.  Third search key:}
           else if PSystem(Key1)^.BIOSCRC16 < PSystem(Key2)^.BIOSCRC16
             then Compare := -1
             else if PSystem(Key1)^.BIOSCRC16 > PSystem(Key2)^.BIOSCRC16
               then Compare := 1
               else Compare := 0;
end;

-- 
Jim Leonard (trixter at oldskool.org)
Check out some trippy MindCandy: http://www.mindcandydvd.com/
A child borne of the home computer wars: http://trixter.oldskool.org/
You're all insane and trying to steal my magic bag!



More information about the fpc-pascal mailing list