SA0014: Assegnazione di istanzePermalink

Rileva le assegnazioni alle istanze dei blocchi funzione. Nel caso di istanze con variabili puntatore o riferimento, queste assegnazioni sono potenzialmente rischiose.

Giustificazione: Si tratta di un avviso di prestazione. Quando un'istanza viene assegnata a un'altra istanza, tutti gli elementi e i sottoelementi vengono copiati da un'istanza all'altra. Anche i puntatori ai dati vengono copiati, ma non i loro dati di riferimento, in modo che l'istanza di destinazione e l'istanza di origine contengano gli stessi dati dopo l'assegnazione. A seconda delle dimensioni delle istanze, questo tipo di incarico può durare a lungo. Ad esempio, se un'istanza deve essere passata a una funzione per essere elaborata, è molto più efficiente passare un puntatore all'istanza. Se si desidera copiare selettivamente i valori da un'istanza all'altra, è utile un metodo di copia: ‎inst_First.Copy_From(inst_Second)‎.

Importanza: Medio

Esempio

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

--> SA0014: Assignment of instances