Bibliothek; Variablen und Methoden vor Applikation verbergen

phieng
2010-01-10
2010-02-11
  • phieng - 2010-01-10

    Ich habe nach einer Möglichkeit gesucht, welche eine Variable/Methode nur ausserhalb einer Bibliothek verbirgt.

    Die Lösung mit {attribute 'hide'} verbirgt die Variable leider auch innerhalb der Bibliothek selbst, was die Entwicklung erschwert.

    Anscheinend gibt es in CoDeSys V2.x die Pragmas {library private} und {library public}, die genau meine Bedürfnisse abdecken würden.

    Meine Versuche damit in der V3 haben allerdings negative Resultate gebracht, sie scheinen überhaupt keinen Einfluss zu haben.

    Weiss jemand mehr darüber bzw. hat eine Lösung für mein Anliegen?

     
  • moellerm - 2010-02-10

    Hallo,

    du kannst das 'hide' attribut mit einem 'define' pragma für die Entwicklungszeit deaktivieren. Dieser Switch muss dann um jedes

    'hide' gemacht werden. Ich hoffe das hilft dir weiter

    Beispiel:

    {IF defined(HIDE_MY_VARIABLES)}

    {attribute 'hide'}
    
      xTestvar := 0;
    

    {ELSE}

      xTestvar := 0;
    

    {END_IF}

    phieng hat geschrieben:
    Ich habe nach einer Möglichkeit gesucht, welche eine Variable/Methode nur ausserhalb einer Bibliothek verbirgt.
    Die Lösung mit {attribute 'hide'} verbirgt die Variable leider auch innerhalb der Bibliothek selbst, was die Entwicklung erschwert.
    Anscheinend gibt es in CoDeSys V2.x die Pragmas {library private} und {library public}, die genau meine Bedürfnisse abdecken würden.
    Meine Versuche damit in der V3 haben allerdings negative Resultate gebracht, sie scheinen überhaupt keinen Einfluss zu haben.
    Weiss jemand mehr darüber bzw. hat eine Lösung für mein Anliegen?

     
  • phieng - 2010-02-10

    Danke für die Lösungsmöglichkeit.

    Ich habe bereits Versuche in diese Richtung gemacht, dabei habe ich versucht über ein Pragma zu bestimmen ob es eine GVL-Variable gibt.

    Hat aber nicht funktioniert. Werde nun noch dein Vorschlag versuchen.

    Frage: Wo würdest Du das define 'HIDE_MY_xxx' machen, damit es in der gesamten Bibliothek gültig ist.

    Gruss

     
  • moellerm - 2010-02-11

    Hi,

    ich glaube in der Bibliothek muss man das für jede DUT oder POU einzel festlegen (mit der Rechten Maustaste im POU Fenster auf das Objekt, dann unter Eigenschaften -> Build -> Compiler Options das Define eintragen).

    Normalerweise sollte das auch für ein Komplettes Projekt gehen, z. B. über definitionen von Variablen oder ähnlichem (in der Hilfe findest du einige Beispiele hierzu). Allerdings hat das beim mir auch noch nicht funktioniert, ich vermute hier ist noch die ein oder andere Lücke im CoDeSys die noch nicht so 100%tig funktioniert.

    viele Grüße,

    Michael

     

Log in to post a comment.