home *** CD-ROM | disk | FTP | other *** search
- {
- 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;