4D v16.3For...End for |
||
|
4D v16.3
For...End for
For...End for
Die Syntax für die Abfragefolge For...End for lautet: For(Counter_Variable;Start_Expression;End_Expression{;Increment_Expression}) Die Schleife For...End for wird über eine Zählervariable gesteuert:
Wichtig: Die numerischen Ausdrücke Start_Expression, End_Expression und Increment_Expression werden einmal am Schleifenbeginn festgelegt. Sind diese Ausdrücke Variablen, und ändern Sie eine dieser Variablen innerhalb der Schleife, hat das keine Auswirkung auf die Schleife. Tipp: Für besondere Zwecke können Sie den Wert der Zählervariablen Counter_Variable innerhalb der Schleife ändern, das wirkt sich dann auch auf die Schleife aus.
1. Folgendes Beispiel führt 100 Durchläufe aus: For(vCounter;1;100) 2. Folgendes Beispiel durchläuft alle Elemente der Tabelle anArray: For($vlElem;1;Size of array(anArray)) 3. Folgendes Beispiel durchläuft alle Zeichen des Textes vtSomeText: For($vlChar;1;Length(vtSomeText)) 4. Folgendes Beispiel durchläuft die ausgewählten Datensätze für die Tabelle [aTable]: FIRST RECORD([aTable]) Die meisten der Schleifen For...End for in Ihrer Datenbank sehen wie in den oben aufgeführten Beispielen aus. Manchmal benötigen Sie in einer Schleife eine absteigende Zählervariable. Dazu muss Start_Expression größer als End_Expression sein und Increment_Expression einen negativen Wert haben. Folgende Beispiele führen dieselben Aktionen wie oben aus, sie zählen jedoch in absteigender Reihenfolge: 5. Folgendes Beispiel führt 100 Durchläufe aus: For(vCounter;100;1;-1) 6. Folgendes Beispiel durchläuft alle Elemente der Tabelle anArray: For($vlElem;Size of array(anArray);1;-1) 7. Folgendes Beispiel durchläuft alle Zeichen des Textes vtSomeText: For($vlChar;Length(vtSomeText);1;-1) 8. Folgendes Beispiel durchläuft die ausgewählten Datensätze für die Tabelle [aTable]: LAST RECORD([aTable]) Bei Bedarf können Sie Increment_Expression (positiv oder negativ) für absolute Werte größer als Eins einsetzen. 9. Folgende Schleife ordnet der Tabelle anArray nur die geraden Elemente zu: For($vlElem;2;((Size of array(anArray);2) In manchen Fällen soll eine Schleife n-Male ausgeführt, jedoch verlassen werden, wenn eine andere Bedingung TRUE wird. Dazu fragen Sie diese Bedingung in der Schleife ab. Wenn sie TRUE ist, setzen Sie die Zählervariable explizit auf einen Wert, der höher ist als der Endausdruck. 10. Folgendes Beispiel durchläuft eine Datensatzauswahl bis zum Ende oder bis die Interprozessvariable <>vbWeStop, die anfangs auf FALSE gesetzt ist, TRUE wird. Sie unterbrechen die Operation über die Projektmethode ON EVENT CALL: <>vbWeStop:=False Gehen wir zurück zum ersten Beispiel in For...End for: Folgendes Beispiel führt 100 Durchläufe aus: For(vCounter;1;100) Vergleichen Sie dieselbe Aktion, einmal mit der Schleife While...End while, einmal mit der Schleife Repeat...Until. Ausführung mit der Schleife While...End while: $i :=1 ` Initialisiere den Zähler Ausführung mit der Schleife Repeat...Until: $i :=1 ` Initialisiere den Zähler Tipp: Die Schleife For...End for ist normalerweise schneller als die Schleifen While...End while und Repeat...Until, da 4D die Bedingung für jeden Schleifenzyklus intern abfragt und dann den Zähler erhöht. Verwenden Sie deshalb möglichst die Schleife For...End for. Sie können als Zähler sowohl Variablen vom Typ Zahl, Ganzzahl und Lange Ganzzahl als auch Interprozess-, Prozess und lokale Variablen verwenden. Verwenden Sie für lange sich wiederholende Schleifen, besonders im kompilierten Modus, lokale Variablen vom Typ Lange Ganzzahl. 11. Beispiel: C_LONGINT($vlCounter) ` Verwende lokale Variablen vom Typ lange Ganzzahl Sie können in Schleifen beliebig viele Abfragen For...End for einbauen. Um Fehler zu vermeiden, verwenden Sie für jede Schleifenstruktur eine andere Zählervariable. 12. Folgendes Beispiel durchläuft alle Elemente einer zweidimensionalen Tabelle: For($vlElem;1;Size of array(anArray)) 13. Folgendes Beispiel erstellt eine Zeigertabelle mit allen Datenfeldern Ihrer Datenbank: ARRAY POINTER($apDateFields;0)
Siehe auch
Ablaufsteuerung
|
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v16) |