[Back to SORTING SWAG index]  [Back to Main SWAG index]  [Original]

{ Alphabetic Rec Sort }

Procedure SortIt(Key : Byte);
Var
  I, J : Byte;

Procedure Swapper;
Var
  T : Member;

begin
  T := Memrec[I];
  MemRec[I] := MemRec[J];
  MemRec[J] := T;
end;

begin
  For I := 1 to MaxMem - 1 DO
   For J := I To MaxMem do begin
     Case Key OF
       1 : if MemRec[I].Firstname < MemRec[J].FirstName then Swapper;
       2 : if MemRec[I].LastName  < MemRec[J].LastName  then Swapper;
       3 : if MemRec[I].Points    < MemRec[J].Points    then Swapper;
     end;
end;

{
Another Alternative would be to do as C does, make a Generic Sort routine
where you pass it a Function that returns > 0 if Record1 is greater than
Record2, < 0 if Record1 is Less than Record2, and 0 if they are the same.
}

[Back to SORTING SWAG index]  [Back to Main SWAG index]  [Original]