Newsgroup: it.comp.lang.visual-basic
Titolo: [?] con "Set form = nothing" si scaricano anche i moduli ?

Salve , ho un progetto con form e moduli ,
dopo che, grazie all'aiuto del NG, mi avete convinto che usare l' END per
chiudere tutto non e' molto elegante, da allora uso :
 For Each frm In Forms
          Unload frm
          Set frm = Nothing
 Next frm
con il ciclo sopra elencato si scaricano in automatico anche i moduli oppure
i moduli vengono caricati e scaricati a ogni chiamata automaticamente ?
come al solito in msdn inserendo in indice "moduli standard" si parla di
tutto tranne l'utilizzo delle risorse !

 i moduli vengono caricati e scaricati a ogni chiamata automaticamente ?
???
Moduli?
Non puoi gestire il caricamento/scaricamento di moduli dalla memoria (per
quanto ne so...)
Funziona solo con le form...
Tutti gli altri oggetti vengono distrutti quando tutte le variabili che li
puntano vengono impostate a nothing...
                Ciao
                                        Allanon
--
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità!

 Set frm = Nothing
Veramente il Set frm = Nothing serve a settare la form di riferimento a
nothing e non frm :)
Il codice dei moduli viene scaricato automaticamente al termine dell'app.
Ciao
--
' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("
http://www.neodatatype.net
")
' // you can find resources for and from the NG here!
Me.SitoComune = "
http://www.it-lang-vb.net
"

 nothing e non frm :)
[SNIP]
Siamo sicuri?
parlando di classi "normali" e' certamente non vero, se hai due variabili
che puntano alla stessa istanza di oggetto e ne setti una a Nothing viene
distrutto il puntatore, non l'istanza puntata; lo stesso motivo per cui puoi
fare
Dim x As Classe, c as collection
set c=new collection
For i = 1 to 10
    set x = New Classe
    c.Add x
Next
e ottenere la collection popolata da 10 istanze valide (altrimenti le prime
9 sarebbero nothing)
Parlando di form il comportamente e' coerente a quanto detto sopra, tanto e'
vero che questo codice funziona
Dim A As Form1, B As Form1
Set A = New Form1
Set B = A
Set B = Nothing
A.Show
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 distrutto il puntatore, non l'istanza puntata;
vero, ritiro tutto. :)


 vero, ritiro tutto. :)
io sto impazzendo ! E' solo un mio pallino :
da MSDM :
Memoria e risorse completamente recuperate
L'unico modo per rilasciare tutta la memoria e le risorse consiste nello
scaricare il form e impostare quindi tutti i riferimenti su Nothing. Il
riferimento più comunemente ignorato durante questa operazione è la
variabile globale nascosta citata in precedenza. Se in un qualsiasi momento
si è fatto riferimento al form utilizzandone il nome di classe, ovvero il
nome indicato dalla proprietà Name nella finestra Proprietà, significa che è
stata utilizzata la variabile globale nascosta. Per liberare la memoria del
form, è necessario impostare questa variabile su Nothing. Ad esempio:
Set Form1 = Nothing
NdA : (quindi qui si scarica il form chiamandola dalla sua variabile globale
che equivale al suo nome ? )
Suggerimento   Molti programmatori evitano l'utilizzo delle variabili
globali nascoste e preferiscono dichiarare variabili del form, ad esempio
Dim dlgAbout As New frmAboutBox, per gestire il ciclo di vita del form.
NDA( e in questo caso come lo scarico ? sempre con dlgAbout = nothing ? )
Nota   L'esecuzione dell'istruzione End scarica tutti i form e imposta tutte
le variabili oggetto del programma su Nothing. Tuttavia si tratta di un modo
sconsigliabile per terminare il programma. Nessuno dei form genera i
relativi eventi QueryUnload, Unload o Terminate e gli oggetti creati non
generano eventi Terminate.
NDA: adesso torniamo ai flame di qualche mese fa :
se non ho istanziato nessun evento queryunload , unload o terminate vuol
dire che posso usare l'END tranuillamente allora ?

 puntano vengono impostate a nothing...
si ma appunto questo non mi e' chiaro , allora io dopo essere sicuro di aver
scaricato tutte le form , dovrei aver eliminato automaticamente tutte le
variabili associate a un modulo no ?
es:
ho un modulo con 1 funzione  FUNC1
in una form carico in x il valore della FUNC1 :
 x = FUNC1
dopo set form1 = nothing
ho scaricato la form e quindi anche la variabile X ?
di conseguenza il modulo dovrebbe scaricarsi perche' non ha + variabili che
lo puntano ?

 dire che posso usare l'END tranuillamente allora ?
Sì
Scusa, non ho capito che cosa non hai capito...
Salutoni
Sergio

 ho scaricato la form e quindi anche la variabile X ?
Dove e' definita X?


 Dove e' definita X?
Azz , di solito nei form ( e quindi verranno scaricate ) e se la mia X
invece la definisco globale nel modulo ?

 Sergio
non ho capito se il ciclo che uso per scaricare le form e' valido o no ! (
alcuni post + su )

 alcuni post + su )
Mi pare che ti abbiano gią chiarito i dubbi:
1) il ciclo che usi č corretto, anche se l'istruzione "set frm = nothing" č
sostanzialmente inutile
2) il codice dei moduli viene scaricato alla chiusura dell'applicazione.
Specificazione: il codice, non le variabili istanziate dal codice, che
vengono create e distrutte a seconda della loro area di visibilitą.
Salutoni
Sergio

"Gigio2k [work]" <n...@mail.please> ha scritto nel messaggio
news:CfHj9.208$e31....@twister2.libero.it...

Quando viene scaricato il modulo.
come dicevo prima e ha ribadito Sergio "CSSoft" nell'ultimo messaggio,
questo avviene in chiusura di applicazione, dopo che hai terminato tutte le
form caricate.
