PDA

View Full Version : Variabili


Carmen
22-11-2002, 18:11
Ciao.

Una domanda al quanto curiosa da sottoporvi relativa alle variabili:

Praticamente un un Form VB6 nella sezione DICHIARAZIONE imposto una variabile "Dim Prova As Double", Successivamente sempre nella stessa pagina la richiamo in diversi punti quando mi serve, fin quì OK! credo però che sia giusto che quando alla fine chiudo il form faccio rilasciare le risorse con "Set Prova = Nothing", inserito nell'evento UNLOAD del Form. Bhe! mi da un errore di "NECESSARIO OGETTO" proprio su questa riga.

Se invece dichiaro la variabile "Dim Prova As Double" all'interno delle routine che ne faccio uso non mi da nessun errore.

Allora mi sono chiesta: se dichiaro questa variabile "Dim Prova As Double" non dovrebbe essere disponibile per tutto il form
nella quale l'avevo dichiarata? senza ripeterla sempre?

Oppure dichiarare variabile nelle dichiarazioni del form non serve a nulla ma devono essere dichiarati a livello di routine da dove vengongo poi effettivamente utilizzati?

Oppure ancora una volta chiuso il form le variabili vengo rilasciate automaticamente?

Spero che qualcuno mi possa un pò illuminare un pò più su come esattamente lavorano le variabili.


Carmen :rolleyes:

xegallo
22-11-2002, 18:28
le variabili vengono rilasciate da sole
al momento del unload la variabile è già stata distrutta

cn73
22-11-2002, 18:31
Infatti...Al momento dell richiamo di UNLOAD la variabile è già stata distrutta... prova a mettere l'istruzione nell'evento CLOSING della form (esiste in WB? :D)

tas
22-11-2002, 18:40
Set Prova = Nothing

si applica solo alle variabili di tipo oggetto, non ai tipi standard

Carmen
22-11-2002, 20:18
Grazie! Non vi arrabiate :D :D :D

Potreste illumunarmi un tantino di più su questo passaggio.

si applica solo alle variabili di tipo oggetto, non ai tipi standard

Comunque in pratica se o ben "recepito" le variabili vanno distrutte quando si utilizzano ad esempio in un modulo *.BAS??

cn73
22-11-2002, 21:03
Ti parlo di JAVA ma immagino che in VB sia la stessa cosa...un oggetto è un'istanza di una classe (ma VB implementa l'ereditarietà??). In parole più semplici è una "variabile" complessa, difinita da te o propria del linguaggio, e non uno dei tipi Standard (es int, Float, char...).

Quando tu dichiari Dim Prova As Double "dici" di riservare una zona di memoria correttamente dimensionata atta a contenere un tipo Double (mi pare 64 bit, 8 byte). Prova (fra l'altro è bene tenere conto della regola "non scritta" di utilizzare la maiuscola iniziale per le classi e le minuscole per variabili) è il puntatore a questa zona di memoria.

Set Prova = Nothing in pratica dice al puntatore di non puntare a nessuna zona di memoria, perdendo il riferimento alla zona che conteneva il Double. In JAVA si può fare per tutte le variabili e gli oggetti, la sintassi sarebbe prova=null;

Carmen
22-11-2002, 21:31
capito... se così è stato scritto. Così sia :( :D

cn73
23-11-2002, 13:33
amen :D

CIUFFO
23-11-2002, 19:46
GUARDA LA GUIDA DI VISUAL BASIC
ISTRUZIONE SET
ISTRUZIONE DIM

E' MOLTO CHIARA