For Each Row…End-Anweisung (FPScript)

09.03.2021

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

For Each Value...End-Anweisung

For...End-Anweisung

While...End-Anweisung

Do...While-Anweisung

Artikel teilen oder als Email versenden:

Diese Beiträge könnten Sie ebenfalls interessieren