Skip to main content

SA0014 : Affectation d'instances

Détecte les affectations aux instances de bloc fonction. Dans le cas d'instances avec des pointeurs ou des variables de référence, ces affectations sont potentiellement risquées.

Justification : Il s'agit d'un avertissement de performance. Lorsqu'une instance est affectée à une autre instance, tous les éléments et sous-éléments sont copiés d'une instance à l'autre instance. Les pointeurs vers les données sont également copiés, mais pas leurs données référencées, de sorte que l'instance cible et l'instance source contiennent les mêmes données après l'affectation. Selon la taille des instances, ce type d'affectation peut durer longtemps. Par exemple, si une instance doit être transmise à une fonction pour traitement, il est beaucoup plus efficace de transmettre un pointeur vers l'instance.

Si vous souhaitez copier sélectivement des valeurs d'une instance à une autre, une méthode de copie est utile :

inst_First.Copy_From(inst_Second)

Importance : Moyenne

Exemple 27. Exemple
PROGRAM PLC_PRG
VAR
    inst_First : My_FB;
    inst_Second : My_FB;
END_VAR
inst_First();
inst_Second := inst_First;  // SA0014

Sortie dans le messages voir:

  • sa_icon_message.png SA0014 : Affectation des instances