The repeat .. until construct is termed a post-test loop, because the controlling condition is tested after each iteration of the loop.
It has the following syntax:
repeat statement1; // statement2; // further statements... until BooleanExpression;
A repeat loop encloses its executed statements, which means they do not need to be further enclosed in a begin ... end block. Note that a repeat loop continues until its controlling Boolean expression is True; whereas the while loop continues until its Boolean expression is False.
For instance, the following repeat loop executes at least once:
repeat WriteLn(Node.Text); Node := GetNextNode; until not Assigned(Node);
It assumes that Node is not Nil at the outset. If this assumption is incorrect, the code will fail, and the program may crash.
A while loop is more defensive, since the needed check is performed before any loop statements are executed:
while Assigned(Node) do begin WriteLn(Node.Text); Node := GetNextNode; end;
Use a repeat loop when the looping statement(s) must execute at least once, whatever the initial value of the controlling Boolean condition.