[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]