For Each Row…End-Anweisung (FPScript)
Wiederholt eine Reihe von Anweisungen für alle Zeilen eines Datensatzes.
Syntax
For Each Row Zähler In Datensatz Do
[Anweisungen]
End
Die Syntax der For Each Row...End-Anweisung besteht aus folgenden Teilen:
Teil |
Beschreibung |
---|---|
Zähler |
Variable, die als Schleifenzähler verwendet wird. Den Schleifenzähler müssen Sie nicht mit Dim deklarieren. |
Datensatz |
Der Datensatz, dessen Werte durchgezählt werden sollen. Der Datensatz darf kein Einzelwert sein. |
Anweisungen |
Eine oder mehrere Anweisungen, die für jeden Wert im Datensatz ausgeführt werden. |
Anmerkungen
Der For Each Row-Block wird ausgeführt, wenn sich mindestens ein Wert in Datensatz befindet. In diesem Fall führt das Programm alle Anweisungen in der Schleife mit Zähler gleich Null aus. Die Schleife wird für alle Werte in Datensatz wiederholt wobei Zähler die Werte von Null bis zur Anzahl der Werte minus Eins annimmt. Dann verlässt das Programm die Schleife und setzt die Ausführung mit der Anweisung fort, die auf die End-Anweisung folgt.
Wenn Sie alle Werte einer Datenmatrix oder eine Signalreihe iterieren möchten, müssen Sie die For Each Row...End-Schleife in eine For Each Column...End-Schleife einbetten, welche die Spalten durchzählt. Verwenden Sie für jede Schleife einen eindeutigen Variablennamen als Zähler.
Sie können den Wert von Zähler zwar innerhalb einer Schleife ändern, dies erschwert jedoch das Verständnis und das Testen des Codes.
Zähler wird innerhalb der Schleife häufig zum Indizieren eines Wertes aus Datensatz verwendet.
Hinweis Sie sollten Schleifen über einzelne Werte eines Datensatzes nach Möglichkeit vermeiden. FPScript bietet Ihnen die Möglichkeit, komplette Datensätze in einer einzigen Anweisung zu verrechnen. Schleifen lassen sich meistens durch Funktionen zur Ereignisisolation in Verbindung mit dem Index-Operator ersetzen. Die For Each Value...End-Schleife ist die schnellste FPScript-Schleife.
Verfügbarkeit
FlexPro View, Basic, Professional, Developer Suite
Beispiel
Das folgende Beispiel setzt alle Werte in einem Signal, die größer als 5.0 sind, auf den Wert 5.0:
Arguments Signal
For Each Row i In Signal Do
If Signal.Y >= 5 Then
Signal.Y = 5
End
End
Signal
Mittels Ereignisisolation lässt sich das obige Beispiel wesentlich einfacher und effizienter schreiben:
Arguments Signal
Signal.Y[ValuesAboveLevel(Signal, 5)] = 5
Signal
Auch diese Variante lässt sich noch weiter vereinfachen, da es eine eingebaute Funktion Clip gibt, die die gewünschte Operation durchführt:
Arguments Signal
Clip(Signal, , 5)
Siehe auch
For Each Column...End-Anweisung
For Each Element...End-Anweisung