The following program code demonstrates the effect the Sorted property has on a TMult variable. Notice that setting Sorted back to False does not revert the list to its unsorted order:
procedure TForm1.Button1Click(Sender: TObject); var Mult1: TMult; Subscript: string; begin Mult1 := TMult.Create(Form1); //Create Mult1. Make Form1 its owner Mult1['First'] := 'One'; //Fill Mult1 with some strings Mult1['Second'] := 'Two'; Mult1['Third'] := 'Three'; Mult1['Fourth'] := 'Four'; Mult1['Fifth'] := 'Five'; Memo1.Font.Name := 'Courier'; //configure memo box for better display Memo1.ScrollBars := ssVertical; Memo1.Lines.Clear; Memo1.Lines.Add('Natural order:'); Subscript := ''; //set a starting point repeat Subscript := Mult1.Order(Subscript, 1); //get next Mult element if Subscript <> '' then //if not the end of list Memo1.Lines.Add(Format('%10s', [Subscript]) + ' - ' + Mult1[Subscript]) //display subscript - value until Subscript = ''; //stop when reached the end Mult1.Sorted := True; //list will now be sorted alphabetically Memo1.Lines.Add(''); Memo1.Lines.Add('Sorted order:'); Subscript := ''; //set a starting point repeat Subscript := Mult1.Order(Subscript, 1); //get next Mult element if Subscript <> '' then //if not the end of list Memo1.Lines.Add(Format('%10s', [Subscript]) + ' - ' + Mult1[Subscript]) //display subscript - value until Subscript = ''; //stop when reached the end Mult1.Sorted := False; //existing entries will remain in sorted order Memo1.Lines.Add(''); Memo1.Lines.Add('Unsorted order:'); Subscript := ''; //set a starting point repeat Subscript := Mult1.Order(Subscript, 1); //get next Mult element if Subscript <> '' then //if not the end of list Memo1.Lines.Add(Format('%10s', [Subscript]) + ' - ' + Mult1[Subscript]) //display subscript - value until Subscript = ''; //stop when reached the end end;
Expected output:
Sorted Property Example
You may have to scroll up and down to see all of the output.