[Overview][Constants][Types][Classes][Procedures and functions][Variables] Reference for unit 'Objects' (#rtl)

TSortedCollection.Search

Search for item with given key.

Declaration

Source position: objects.pp line 439

function TSortedCollection.Search(

  Key: Pointer;

  var Index: Sw_Integer

):Boolean; virtual;

Description

Searchlooks for the item with key Keyand returns the position of the item (if present) in the collection in Index.

Instead of a linear search as TCollectiondoes, TSortedCollectionuses a binary search based on the keys of the objects. It uses the Comparefunction to implement this search.

If the item is found, Searchreturns True, otherwise Falseis returned.

Errors

None.

See also

TCollection.IndexOf

  

Find the position of a certain item.

Example

Program ex36;

{ Program to demonstrate the TSortedCollection.Insert method }

Uses Objects,MyObject,MySortC;
 { For TMyObject,TMySortedCollection definition and registration }

Var C : PSortedCollection;
    M : PMyObject;
    I : Longint;

Procedure PrintField (Dummy: Pointer;P : PMyObject);

begin
  Writeln ('Field : ',P^.GetField);
end;


begin
  Randomize;
  C:=New(PMySortedCollection,Init(120,10));
  C^.Duplicates:=True;
  Writeln ('Inserting 100 records at random places.');
  For I:=1 to 100 do
    begin
    M:=New(PMyObject,Init);
    M^.SetField(Random(100));
    C^.Insert(M)
    end;
  M:=New(PMyObject,Init);
  Repeat;
    Write ('Value to search for (-1 stops) :');
    read (I);
    If I<>-1 then
      begin
      M^.SetField(i);
      If Not C^.Search (M,I) then
        Writeln ('No such value found')
      else
        begin
        Write ('Value ',PMyObject(C^.At(I))^.GetField);
        Writeln (' present at position ',I);
        end;
      end;
  Until I=-1;
  Dispose(M,Done);
  Dispose(C,Done);
end.