Auf Elemente eines Datentypen als Initialwert zugreifen.

foenig
2008-12-28
2008-12-29
  • foenig - 2008-12-28

    Ich wollte als Initialwert einer Variable ein Element aus einem Datentyp verwenden.

    TYPE Color_Type :
    STRUCT
       Black          : DWORD := 16#000000;
       Blue           : DWORD := 16#FF0000;
       Green          : DWORD := 16#00FF00;
    END_STRUCT
    END_TYPE
    
    VAR_GLOBAL CONSTANT
       Color : Color_Type;
    END_VAR
    
    FUNCTION_BLOCK VisObjButton
    VAR_INPUT 
       Farbe : DWORD := Color.Black; (* Hier klemmts *)
    END_VAR
    

    Die Ãœbersetzungsoption Konstanten ersetzen ist aktiv.

    Leider geht das nicht. Gibt es eine andere Möglichkeit Constanten zu Strukturieren? Ich will eben nicht das jede Farbe einzeln in der Auswahl erscheint (das geht ja so) aber leider nicht wenn ich die Farbe als Initialwert verwenden will ;o(

     
  • walwa - 2008-12-29

    Ich hab das Problem mit einer Initialisierungsroutine umgangen. Ist das einfachste.

    FUNCTION_BLOCK VisObjButton
    VAR_INPUT
    Farbe : DWORD;
    END_VAR
    VAR
    init : BOOL;
    END_VAR

    IF NOT init THEN
    Farbe:=Color.Black;
    init:=true;
    END_IF;

    Die Abfrage wird einfach nur einmal ausgeführt (bei der Initialisierung).

     
  • foenig - 2008-12-29

    Danke!

    Ich habe das auch mit einer Initroutine gelöst und denke das es wohl leider auch keine andre Lösung gibt.

    Es gefällt mir halt grundsätzlich nicht in einer Funktion schreibend auf eine Inputvariable zu schreiben ;o(

     

Log in to post a comment.