How to make a pass through the ring queue correctly?

How do I make a pass through the queue to display the information of this queue?

You can't just run through the array from 0 to Arr_Size(array length) .( the teacher's comment "the passage in turn should not be done in an array, but in TURN, from the first in the QUEUE to the last in the QUEUE (and not in the array)!" But how to do it?

If you add all 3 elements to the queue, those forming a ring situation, then only 1 element is output, tk First:=0 a Last:=0

If you make a loop from First to First+CountClient-1, then when the queue is full, all the elements are output, but if you remove 1 and then add it, then the output will be only 2 of the elements, because we have First:=1 and First+CountClient-1:=3, those element under index " 0 " is simply skipped

function TBank.AddClient (Client:TClient):boolean;
begin
if (CountClient<=Arr_Size) then
begin
 Clients[Last]:=Client;    //добавление в конец колц.очереди
 Last:=Last+1;                               //ув.счетчика
    if (Last>Arr_Size) then begin
Last:=0;   end;
inc(CountClient);
result:=true;
  end  else begin
  result:=false; end;
   end;
//----------------------------------------------------------------------

function TBank.DeleteClient :boolean;
begin
if (CountClient=0) then begin
result:=false; end
else
begin
Clients[First]:=NIL;
Clients[First].Free;
First:=First+1;                            
if (First>Arr_Size) then begin
 First:=0;
 end;
   CountClient:=CountClient-1;
   result:=true;
   end;end;
 //----------------------------------------------------------------------


function TBank.OutputFullInfo:string;
var i,c:integer;
begin
result:='';
if CountClient=0 then result:=''
else begin
for i:= first to Last do
begin
 if Clients[i]<>nil then begin
 result:=result+Clients[i].GetNameClient+#10#13;
 result:=result+Clients[i].FullInfoOperationsWithDeposits+#10#13;
  end else
  end;
end;
end;
Author: Kromster, 2020-05-30