Code:
// Flur Rechts
FOR iFlurOben := 1 TO 5 BY 1 DO
GVL.xGesPrasenzFlurRechts := GVL.xGesPrasenzFlurRechts OR aPrasenzFlurRechts[iFlurRechts] ;
END_FOR ;
Das kann nicht funktionieren. Die LaufVariable 'iFlur
Oben' wird durch die ForSchleife zwar von 1 bis 5 bzw. 6 hochgezählt, ABER diese LaufVariable wird in der Schleife gar nicht benutzt, weil dort stattdessen der falsche VariablenName 'iFlur
Rechts' benutzt wird und deshalb bei jedem SchleifenDurchlauf auf dasselbe ArrayElement zugegriffen wird ... oder auf ein nicht existierendes Element ausserhalb des definierten ArrayBereiches, denn in 'iFlur
Rechts' könnte ja ein Wert <1 oder >5 stehen.
Die Variable 'GVL.GesPrasenzFlurRechts' muss vor der FOR-Schleife zwingend mit FALSE (oder mit einem Element des Arrays 'aPrasenzFlurRechts[]') vorbesetzt werden.
Dadurch kann 'GVL.GesPrasenzFlurRechts' selbstverständlich vorübergehend einen falschen bzw. den nicht endgültigen Wert beinhalten. Der Wert "flackert" also, aber wen juckt das denn?
Nach Durchlaufen der Schleife (auch bei vorzeitigem Abbruch der Schleife per EXIT - wie von Harald vorgeschlagen) ist das Flackern vorbei.
Will man partout das Flackern in der "ErgebnisVariablen" vermeiden, dann benutzt man eine HilfsVariable und kopiert ihren Inhalt nach der Schleife in die ErgebnisVariable um.
Edit: Warum konnte ich Deinen Beitrag erst sehen, nachdem ich meinen abgeschickt habe, Mario?