RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TObjectStack.Pop Method

Pop stack item.

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

This method removes one item from the top of the stack without returning it. Count is decremented by 1. If Count is already 0, an error is raised.

Note: TObjectStack.Pop differs from TStack.Pop in that it is a procedure and does not return the popped element. Otherwise, both methods function similarly. Use TStack.Peek to work with the head of the stack and TStack.Pop when finished with the head, or alternatively use TStack.Extract to take ownership.
 

Delphi Examples: 

 

{
This example demonstrates the usage of the generic TObjectStack 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
  Stack: TObjectStack<TNewObject>;
  Button: TButton;
begin
  { Create a new stack }
  Stack := TObjectStack<TNewObject>.Create();

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

  { Push some items up the stack }
  Stack.Push(TNewObject.Create('One'));
  Stack.Push(TNewObject.Create('Two'));
  Stack.Push(TNewObject.Create('Three'));

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

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

 

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