mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 03:19:47 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			976 B
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			976 B
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
program testcont;
 | 
						|
 | 
						|
{$mode objfpc}
 | 
						|
 | 
						|
uses contnrs;
 | 
						|
 | 
						|
Type
 | 
						|
  TTestObject = Class(TObject)
 | 
						|
    FID : Integer;
 | 
						|
    Fmsg : String;
 | 
						|
    Constructor Create (ID : INteger; Msg : String);
 | 
						|
    Procedure Print;
 | 
						|
  end;
 | 
						|
 | 
						|
Constructor TTestObject.Create (ID : INteger; Msg : String);
 | 
						|
 | 
						|
begin
 | 
						|
  FID:=ID;
 | 
						|
  FMsg:=Msg;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TTestObject.Print;
 | 
						|
 | 
						|
begin
 | 
						|
  Writeln(FID,' (',FMsg,')');
 | 
						|
end;
 | 
						|
 | 
						|
Var
 | 
						|
   S : TOrderedList;
 | 
						|
   O : TTEstObject;
 | 
						|
   I : Integer;
 | 
						|
begin
 | 
						|
//   S:=TObjectStack.Create;
 | 
						|
   S:=TObjectQueue.Create;
 | 
						|
   For I:=1 to 10 do
 | 
						|
     S.Push(TTestObject.Create(I,''));
 | 
						|
   Writeln('Popping list');
 | 
						|
   Repeat
 | 
						|
     O:=TTestObject(S.Pop);
 | 
						|
     If O<>Nil then
 | 
						|
       begin
 | 
						|
       Write('Popped : ');
 | 
						|
       O.Print;
 | 
						|
       Write (S.Count,' elements left. ');
 | 
						|
       O:=TTestObject(S.Peek);
 | 
						|
       If (O<>NIl) then
 | 
						|
         begin
 | 
						|
         Write('Next element is : ');
 | 
						|
         O.Print;
 | 
						|
         end
 | 
						|
       else
 | 
						|
         Writeln;
 | 
						|
       end;
 | 
						|
   Until (O=Nil);
 | 
						|
   Writeln('Popped stack');
 | 
						|
end.
 |