RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TObjectQueue.Dequeue Method

Remove top queue item.

Pascal
procedure Dequeue;
C++
__fastcall Dequeue();

Dequeue removes but does not return the top element of the queue. Count is decremented by 1. If Count is already 0, an error is raised.

Note: TObjectQueue.Dequeue differs from TQueue.Dequeue in that it is a procedure and does not return the dequeued element. Otherwise, both methods function similarly. Use TQueue.Peek to work with the head of the queue and TQueue.Dequeue when finished with the head, or alternatively use TQueue.Extract to take ownership.
 

Delphi Examples: 

 

{
This example demonstrates the usage of the generic TObjectQueue class.
}
type
  { Declare a new object type }
  TNewObject = class
  private
    FName: String;

  public
    constructor Create(const AName: String);
    destructor Destroy(); override;
  end;

{ TNewObject }

constructor TNewObject.Create(const AName: String);
begin
  FName := AName;
end;

destructor TNewObject.Destroy;
begin
  { Show a message whenever an object is destroyed }
  MessageDlg('Object "' + FName + '" was destroyed!', mtInformation, [mbOK], 0);
  inherited;
end;

procedure TForm3.Button1Click(Sender: TObject);
var
  Queue: TObjectQueue<TNewObject>;
  Button: TButton;
begin
  { Create a new Queue }
  Queue := TObjectQueue<TNewObject>.Create();

  { Set the OwnsObjects to true - the Queue will free them automatically }
  Queue.OwnsObjects := true;

  { Enqueue some items up the Queue }
  Queue.Enqueue(TNewObject.Create('One'));
  Queue.Enqueue(TNewObject.Create('Two'));
  Queue.Enqueue(TNewObject.Create('Three'));

  {
    Dequeue an instance of TNewObject class. Destructor
    show be called because we have set the OwnsObjects
    to true!
  }
  Queue.Dequeue();

  { Destroy the Queue completely - more messageboxes will be shown }
  Queue.Free;
end;

 

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!