Array auf Bool'schen Wert überprüfen

e-pappy
2010-06-16
2010-06-18
  • e-pappy - 2010-06-16

    Hallo zusammen!

    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_VAR
    IF 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]

     
  • Erik Böhm - 2010-06-17

    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

     
  • Anonymous - 2010-06-17

    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

  • e-pappy - 2010-06-17

    für die Hinweise!

    Die Pointer-Variante scheint mir wohl em elegantesten, obwohl Andy's Variante natürlich auch schön kurz ist

    Danke

     
  • Matze001 - 2010-06-18

    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

     

Log in to post a comment.