Skip to main content

Aiguille: THIS

le THIS pointeur est une variable spéciale utilisée pour la programmation orientée objet.

THIS est le pointeur d'un bloc fonction vers sa propre instance de bloc fonction. UNE THIS pointeur est automatiquement disponible pour chaque bloc fonction. Vous pouvez utiliser THIS uniquement dans les méthodes et dans les blocs fonctionnels. THIS est disponible pour l'implémentation dans l'assistant de saisie dans la catégorie Mots clés.

Déréférencement du pointeur : THIS^

. Utilisation de la THIS aiguille
  • Si une variable locale remplace une variable de bloc fonction dans une méthode, vous pouvez définir la variable de bloc fonction avec la THIS aiguille. Voir exemple ci-dessous (1)

  • Si le pointeur vers la propre instance de bloc fonction du bloc fonction est référencé pour être utilisé dans une fonction. (Voir exemple ci-dessous (2))

Exemple 100. Exemples

ST

THIS^.METH_DoIt();

FBD/CFC/LD

_cds_img_pointer_this.png


Exemple 101. Exemple

le iVarB la variable locale remplace la iVarB variable de bloc fonction.

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
iVarA := 1;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    // The local variable iVarB is set.
    THIS^.iVarB := 222;    // The function block variable iVarB is set even though iVarB is obscured.

PROGRAM PLC_PRG
VAR
   MyfbB: fbB;
END_VAR

MyfbB(iVarA:=0, iVarB:= 0);
MyfbB.DoIt();


Exemple 102. Exemple

Un appel de fonction nécessite la référence à sa propre instance.

FUNCTION funA
VAR_INPUT
    pFB: fbA;
END_VAR
...;

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
...;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    //The local variable iVarB is set.
    funA(pFB := THIS^);    //funA is called via THIS^.

PROGRAM PLC_PRG
VAR
    MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
MyfbB.DoIt();


Astuce

THIS n'est pas encore implémenté pour la liste d'instructions (IL).