文を繰り返し実行したい場合には for 文、while 文の他に repeat 文 を使用することが出来きます。
repeat 文は、どちらかというと while 文に似ていますが、 その違いは繰り返す条件の判定を最後に行うことと、 その判定が True の場合にループを終了することです。
ループするかしないかの判定を最後に行いますので、 repeat 文に記述された文は、少なくとも必ず 1 回は 実行される事になります。
repeat 文は、以下のようなコードで表現されます。
repeat ....... ....... ....... until 条件; // 条件が真の時、ループを終了
簡単な例を見てみましょう。
procedure TForm1.Button1Click(Sender: TObject);
var
Number: Integer;
LoopCount: Integer;
begin
Number := 0;
LoopCount := 0;
repeat
Number := Number + 3;
LoopCount := LoopCount + 1;
until Number > 100; // Number が 100 より大きければループ終了
ShowMessage('Number は' + IntToStr(Number));
ShowMessage(IntToStr(LoopCount) + '回ループしました');
end;
上のプログラムを図で示したのが下図です。

while 文では、ループするかどうかの判定をループ開始時に行い、判定が True の場合に ループを行いますが、repeat 文では、ループするかどうかの判定をループ終了時に 行い、判定が True の時にループを終了します。
while 文と repeat 文との違いを表しているのが、次のプログラムです。
procedure TForm1.Button1Click(Sender: TObject);
var
whileNumber : Integer;
whileLoopCount : Integer;
repeatNumber : Integer;
repeatLoopCount: Integer;
begin
whileNumber := 50;
whileLoopCount := 0;
while whileNumber < 30 do
begin
whileNumber := whileNumber + 50;
whileLoopCount := whileLoopCount + 1;
end;
repeatNumber := 50;
repeatLoopCount := 0;
repeat
repeatNumber := repeatNumber + 50;
repeatLoopCount := repeatLoopCount + 1;
until repeatNumber > 30;
ShowMessage('whileNumber は' + IntToStr(whileNumber));
ShowMessage('while 文では' + IntToStr(whileLoopCount) + '回ループ');
ShowMessage('repeatNumber は' + IntToStr(repeatNumber));
ShowMessage('repeat 文では' + IntToStr(repeatLoopCount) + '回ループ');
end;
while 文では、ループするかどうかを whileNumber < 30 で行っています。 whileNumber は、ループに入る前に 50 に初期化されていますので、whileNumber < 30 の評価時には 既に False です。ですからループは一度も行われません。
一方 repeat 文でもループに入る前に repeatNumber を 50 に初期化していますが、 ループするかどうかの判定は最後に行われますので、repeatNumber の値がなんであろうと 必ず一度はループします。そして、repeatNumber > 30 が評価され、True であればループ終了、 False であればもう一度ループし、再度 repeatNumber > 30 が評価されます。
また、サンプルプログラムからも分かりますが repeat 文では、実行される文が複数存在しても begin と end で囲む必要がありません。つまり、以下のようにしなくても良いことになっています。
repeat
begin // 必要ありません
....
....
end; // 必要ありません
until repeatNumber < 30;