Programmiere gerade in ST und Frage mich die ganze Zeit, ob es nicht irgendeinen Befehl gibt, der mir das hier vereinfachen kann:
VAR fx : ARRAY [0..7] OF BOOL; fxON : BOOL;END_VARIF fx[0] OR fx[1] OR fx[2] OR fx[3] OR fx[4] OR fx[5] OR fx[6] OR fx[7] THEN fxON := TRUE;ELSE fxON := FALSE;END_IF;
Ich will also das Array auf einen TRUE-Wert überprüfen, aber ohne eine Schleife einzusetzen. Gibt es da von CoDeSys direkt einen Befehl der das überprüfen kann?
Danke
mfG
Patrick[/code]
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo zusammen!
Programmiere gerade in ST und Frage mich die ganze Zeit, ob es nicht irgendeinen Befehl gibt, der mir das hier vereinfachen kann:
Ich will also das Array auf einen TRUE-Wert überprüfen, aber ohne eine Schleife einzusetzen. Gibt es da von CoDeSys direkt einen Befehl der das überprüfen kann?
Danke
mfG
Patrick[/code]
Moin
Die erste Frage ist natürlich: Warum keine Schleife ???
Du könntest alternativ auf das ARRAY einen Pointer to BYTE zeigen lassen, und dann das Byte auf Wert <> 0 abfragen.
Oder anstatt dem ARRAY of BOOL ein Byte benutzen, und die einzelnen Bits ansprechen.
Oder das ARRAY auf eine feste Adresse legen, ein Byte auf die selbe Adresse und wieder das Byte abfragen.
Der Pointer wäre zweifellos das eleganteste.
Gruss
Erik
Originally created by: Andy :-)
Hallo,
Du kannst natürlich auch:
fxON := (fx[0] OR fx[1] OR fx[2] OR fx[3] OR fx[4] OR fx[5] OR fx[6] OR fx[7]);
schreiben...
Andy
Related
Talk.ru: 1
Talk.ru: 2
Talk.ru: 3
Talk.ru: 5
Talk.ru: 7
für die Hinweise!
Die Pointer-Variante scheint mir wohl em elegantesten, obwohl Andy's Variante natürlich auch schön kurz ist
Danke
wenn das Array unterschiedliche Größen haben kann, oder irgendwann mehr als 20 Einträge hat, sollte man schon mal über Schleifen nachdenken!
MfG
Marcel