uses System.Generics.Collections;
//guard clause: check the bad state
//first and leave early
function PopOrZero(
Stack: TStack<Integer>): Integer;
begin
if Stack.Count = 0 then
Exit(0);
Result := Stack.Pop;
end;
var
Stack: TStack<Integer>;
begin
Stack := TStack<Integer>.Create;
Stack.Push(1);
WriteLn('n1 is ', PopOrZero(Stack));
//n1 is 1
WriteLn('n2 is ', PopOrZero(Stack));
//n2 is 0
end.