10.7 Schleifen-Konstrukte
10.7.1 for-Schleife
Dieses Konstrukt dient zur Formulierung von Schleifen, wenn die Anzahl der Durchläufe vor Eintritt in die Schleife berechnet werden kann.
Syntax
for <Zähler> := <Start> to <Ende> { step <Schrittweite> } do <Anweisungen> endfor
Beim Schleifenstart bekommt <Zähler> den Wert <Start> zugewiesen. Nach jedem Schleifendurchlauf wird <Schrittweite> zu <Zähler> addiert. Wurde <Schrittweite> nicht angegeben, wird immer die Standardschrittweite 1 addiert. Die Schleife wird solange durchlaufen, bis <Zähler> größer als <Ende> ist. Bei jedem Schleifendurchlauf werden die <Anweisungen> ausgeführt, die auf den aktuellen Wert von <Zähler> zugreifen können. <Start>, <Ende> und <Schrittweite> müssen integer-Werte sein. <Zähler> muss integer-Werte annehmen können. <Start>, <Ende> und <Schrittweite> werden nur einmal vor dem ersten Schleifendurchlauf berechnet.
Beispiel
for Index := 1 to Window.childcount do print Window.child[Index]; endfor
Es gibt keine Möglichkeit, eine for-Schleife vorzeitig zu beenden.
Wenn bei for-Schleifen das Abbruchkriterium nicht erreichbar ist, wird die Schleife nicht ausgeführt.
Beispiel
for I := 1 to 10 step -1 do
10.7.2 foreach-Schleife
Dieses Konstrukt dient zur Formulierung von Schleifen, die über alle Elemente einer Sammlung gehen.
Syntax
foreach <Element> in <Ausdruck> do <Anweisungen> endfor
Die Schleife bricht mit einem Fehler ab, wenn der <Ausdruck> keine Sammlung ist oder der Schleifenwert nicht dem <Element> zugewiesen werden kann. Der <Ausdruck> wird nur einmal Initial ausgewertet. Die Laufvariable <Element> darf innerhalb der <Anweisungen> verändert werden. Eine Änderung der Laufvariablen hat keinen Einfluss auf die Durchlaufzahl oder den Wert der Laufvariablen im nächsten Durchlauf.
Beispiel
dialog D
window Wi
{
listbox Lb
{
.xauto 0; .yauto 0;
}
on close { exit(); }
}
on dialog start
{
variable list StationList:= ["ARD ", "ZDF ", "SWR3 ", ""];
variable string Station;
foreach Station in StationList do
Lb.content[Lb.itemcount+1] := Station;
endfor
}
10.7.3 while-Schleife
Dieses Konstrukt ist eine Wiederholungsanweisung, also eine Schleifenanweisung, bei der die Anzahl der Wiederholungen von einer Bedingung abhängig ist. Die Bedingung wird zu Beginn eines neuen Durchlaufes geprüft.
Syntax
while <Bedingung> do <Anweisungen> endwhile
Vor jedem Schleifendurchlauf wird der Wert <Bedingung> berechnet. Er muss ein boolean-Wert sein. Ist er true, werden die <Anweisungen> ausgeführt und die Schleifen von vorne begonnen. Sobald der Wert false ist, wird die Schleife abgebrochen. Anders kann eine while-Schleife nicht beendet werden.
Beispiel
while (Index < Window.childcount) do print Window.child; Index := Index + 1; endwhile