INDE: Parametri di output
copia linkDescrizione del difetto
Il seguente codice:
B = 10
A = B (quindi A = 10)
Prova(B) modifica B a 5
... A = 5 !!!
Può dare un risultato inatteso se il parametro della funzione Prova è di output. In questo caso, infatti, la funzione modifica internamente l'oggetto IDVariant a cui punta la variabile B, ma siccome anche la variabile A punta allo stesso oggetto, anche la variabile A risulta modificata.
Effetti del malfunzionamento
- Esecuzione di codice inattesa in caso di chiamata a funzioni con parametro di output.
Soluzioni
E' sufficiente utilizzare un funzione di conversione prima di assegnare la variabile, ad esempio:
A = To Integer (B) invece che
A = B
Questo crea per A una copia dell'oggetto B, invece che far puntare A e B allo stesso oggetto. Si richiede una modifica esplicita del codice perchè non sarebbe conveniente dal punto di vista prestazionale creare nuovi oggetti ogni volta che si assegnano variabili.
Funzionalità interessate
Chiamata di funzioni con parametri di output.
Note
- Per cercare le funzioni con parametri di output si possono cercare i parametri che hanno il flag Output attivo.
Ultima modifica: 22/01/2008 / Validità: da 6.6.2750