Durchläuft Elemente in einer Objektsammlung oder einem Array.
For <Variable> In <expression>
statements
...
Next
Variable | Eine Variable, der ein Element zugewiesen ist |
expression | Muss ein Ausdruck basierend auf einem Objekt oder einem Array mit mindestens einem Element sein |
Die Variable wird automatisch als lokale Variable deklariert, auch wenn MustDeclareVars aktiviert ist.
Falls der Ausdruck eine Objektsammlung ohne Elemente oder ein mehrdimensionales Array ist, wird die Schleife übersprungen und die Variable enthält einen leeren String.
Falls der Ausdruck kein Objekt oder Array ist, wird das Skript mit einem Fehler beendet, außer wenn ein COM Errorhandler eingerichtet wurde.
Die Arrays von AutoIt sind schreibgeschützt, wenn For...In verwendet wird. Obwohl man der Variable innerhalb der For...In-Schleife einen Wert zuweisen kann, spiegelt sich diese Änderung nicht im Array selbst wider. Um den Inhalt eines Arrays während des Durchlaufs anzupassen, ist eine For...To-Schleife zu verwenden.
For...In...Next-Schleifen können verschachtelt werden.
#include <MsgBoxConstants.au3>
Example()
Func Example()
; ein Array verwenden
Local $aArray[4]
$aArray[0] = "a"
$aArray[1] = 0
$aArray[2] = 1.3434
$aArray[3] = "test"
Local $sString = ""
For $vElement In $aArray
$sString = $sString & $vElement & @CRLF
Next
MsgBox($MB_SYSTEMMODAL, "", "For..IN Arraytest:" & @CRLF & "Das Ergebnis lautet: " & @CRLF & $sString)
; Verwendung eines Objektes
Local $oShell = ObjCreate("shell.application")
Local $oShellWindows = $oShell.windows
If IsObj($oShellWindows) Then
$sString = ""
For $Window In $oShellWindows
$sString = $sString & $Window.LocationName & @CRLF
Next
MsgBox($MB_SYSTEMMODAL, "", "Es gibt folgende geöffnete Fenster:" & @CRLF & $sString)
Else
MsgBox($MB_SYSTEMMODAL, "", "Es gibt keine geöffneten Fenster.")
EndIf
EndFunc ;==>Example