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

{
WL> Say, would anyone know how-to sort a Record With 5 thing
 WL> in it one of which is "NAME"...I want to sort each Record
 WL> in the Array by name and can't figure it out....my Array
 WL> name is LabelS and my Record name is SofT....so any help
 WL> would greatly be appreciated...thanks

The easiest way is to make it an Object, and put it in a TSortedCollection.
For example:
}

  Type
    PMyrec = ^TMyrec;
    TMyrec = Object(tObject)
      name : String;
      other : Integer;
    end;

    TSortedRecs = Object(TSortedCollection)
      Function Compare(Key1,key2:Pointer):Integer; Virtual;
    end;

  Function TSortedRecs.Compare;
  Var
    p1 : PMyrec Absolute Key1;
    p2 : PMyrec Absolute Key2;
  begin
    if p1^.name < p2^.name then
      Compare := -1
    else if p1^.name = p2^.name then
      Compare := 0
    else
      Compare := 1;
  end;

Var
  rec : PMyrec;
  coll: TSortedRecs; begin
  coll.init(100,10);   { Init to 100 Records, grow by 10s }

  While More_Records do
  begin
    new(rec,init);
    rec^.name := Get_Name;
    rec^.other:= Get_Other;
    coll.insert(rec);
  end;

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