Bits über For Schleife abfragen!

mauskopf
2015-12-28
2016-04-05
  • mauskopf - 2015-12-28

    Hallo ich habe wiedermal ein Problem!
    Möchte Spagetti Code vermeiden und dazu eine For Schleife verwenden leider gibt es beim Compilieren zu einen Fehler!

    FOR indexMode:=0 TO 9 BY 1 DO 
          IF Var.indexMode THEN   
                          mach was 
                                         
          END_IF
    END_FOR;
    

    Warum kann ich nicht per schleifen Index auf die Bits von Var zugreifen?

    Lg
    Peter

     
  • torsknod - 2016-04-05

    Hallo Peter,
    ich verstehe gerade den Punkt in Var.indexMode nicht. Mit Punkt greift man nur auf strukturierte Variablen zu.
    Ich verwende für solche Anwendungen immer ein Schieberegister:

    temp := VAR;
    FOR indexMode := 0 TO 9 DO
      IF temp AND 1 <> 0 THEN
        .....
      END_IF
      temp := SHR(temp,1);
    END_FOR
    

    Der Code ist jetzt nicht getestet, d.h. kleinere Syntax- oder Tippfehler könnten enthalten sein. Falls der Compiler schlau ist und der Inhalt der IF Bedingung klein genug wird er ein Loop-Unrolling durchführen und dann eine direkte Bitmaskierung verwenden, solange die Grenzen der FOR-Schleife Konstanten sind.

    Gruß
    Torsten

     

Log in to post a comment.