Infinite loop
From Lazarus wiki
Jump to navigationJump to search
│
English (en) │
suomi (fi) │
français (fr) │
русский (ru) │
An infinite loop (also known as an endless loop or unproductive loop or a continuous loop) is a loop which never ends. Inside a loop, statements are repeated forever.
There are two implementations of an infinite loop:
while true do
begin
// loop body repeated forever
end;
repeat
begin
// loop body repeated forever
end
until false;
Break
statement
“While
true
do
” or “repeat
until
false
” loops look infinite at first glance,
but there is a way to escape the loop through the break
statement.
var
i:integer;
begin
i := 0;
while true do
begin
i := i + 1;
if i = 100 then break;
end;
end;
var
i:integer;
begin
i := 0;
repeat
i := i + 1;
if i = 100 then break;
until false;
end;
Optimization
If you really need an infinite loop, it is better to use repeat … until false;
, since it shifts all instructions of the body “less” to the right (at least, if there is more than one statement in the loop).