Newsgroup: it.comp.lang.visual-basic
Titolo: Oggetti: questi sconosciuti

Salve, sono nuovo di questo newsgroup e quindi mi presento:
Sono Carlito, (sulla rete), ed è da poco che mi dedico al VisualBasic che
sto usando nella versione 6 edizione Professional (Sotto Win98). È da oramai
troppo tempo che smanetto con l'html per potermi divertire ancora e quindi
avrei bisogno assoluto di imparare, il più in fretta possibile
(...scontato...) i fondamenti di questo linguaggio.
Ho iniziato da poco e fin'ora è andato tutto bene finchè mi sono ritrovato
di fronte all'uso degli oggetti...
Private Sub Timer1_Timer()
Dim AggiungiBottone
Set AggiungiBottone = Command1
AggiungiBottone.Visible = True
End Sub
Questo è il codice (funzionante) di un programmino che ho creato per
esercitarmi.
In che modo si puossono usare i riferimenti a gli oggetti? (solo in questo
modo?)
Vita morte e miracoli dell'utilizzo di "Set"
...e soprattutto, a che serve...
Set XXXX = CreateObject("Scripting.Dictionary")
Cosa vuol dire CreateObject e cosa c'è tra parentesi?
Mi basta anche qualche "semplice" esempio di un'altro utilizzo o dello
stesso ma più valido.
Grazie 1000
carlito
:)
PS: Non ditemi di andarmelo a leggere sulle guide X e Y perchè tutte quelle
Ufficiali (MSDN, quella su HTML.it, quella su VisualBasic.it) le ho già
lette ed imparate ma ci sono alcune cose che non riesco a capire e che spero
mi vogliate aiutare a chiarire nei prossimi post (spero non saranno molti).

stesso ma più valido.
Questo è solo un'accenno non troppo dettagliato: se questi concetti ti sono chiari, sull' MSDN trovi
le spiegazioni più dettagliate: a questo punto spero ti siano più comprensibili...
Ciao,
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------


Se non elimino il riferimento all'oggetto cosa succede, dato che tutto
funfiona ugualmente?
ciao
Maurizio

Succede che rimane in memoria, inutilizzato.
Cosa succede se metti in moto 3 automobili ma poi ne usi e ne spegni solo
una?
Ciao
            Dbg
Maurizio Giri wrote in message


automaticamente. Infatti non è disponibile un comando duale a "New".
OK, ma.... sei sicuro che abbia capito...:-PP
Insomma, ha detto di essere un principiante: ora hai interrotto il suo apprendimento, poiché passerà
un giorno intero a tradurre parola per parola il tuo messaggio... io c'ho messo meno perché so già
cosa vuol dire "allora", "piuttosto" e "infatti", ma altrimenti... ;-PPP



Fai questo esperimento: in un progetto inserisci due form (form1 e form2).
Form 1 è la form di avvio del progetto.
In form1 inserisci questo codice:
private mobjForm2 as Form2
Private sub Form_Load()
    set mobjForm2=new Form2
    load mobjForm2
    form2.SettaMi Me
    form2.show
end sub
In form2 insirisci questo codice:
public mobjForm1 as Form1
Private sub SettaMi(frm as Form)
    set mobjForm1=frm
end sub
Ora esegui il progetto, chiudi le form una per volta e osserva in che stato
è rimasto l'ide di vb. Per caso è ancora in runmode?
Questo accade perché non hai rilasciato i riferimenti che in questo caso
sono incrociati. Qui non "Garbage Collector" che tenga. Il primo tiene in
vita il secondo che tiene in vita il primo. Nessuno li distruggerà mai se
non lo fai tu a manina ed anche se all'utente finale sembrerà di aver chiuso
l'applicazione questa rimarrà in memoria a far nulla.
L'unico modo per uscire da questa situazione è quello di usare una bella
istruzione End o l'equivalente tasto stop in vb.
Fatti salvo che End non andrebbe mai usato in qualunque applicazione
(continuo a chiedermi perchè l'abbiano messo) il problema non sta tanto nel
terminare o meno un'applicazione ma nel fatto che lo stesso errore lo puoi
fare anche con altre strutture che usi nella tua applicazione. A lungo
andare l'utilizzo di memoria continuerà a crescere a le prestazioni
caleranno fino in casi estemi al collasso.
In ogni caso: per ogni volta che usi la parola chiave New deve comparire da
qualche altra parte la parola chiave Nothing (non è vero il viceversa:
spesso usi l'istruzione Set oggetto =... senza poi usare New, anche in
questi casi è cmq meglio settare a Nothing l'oggetto alla fine
dell'utilizzo).
Ciao, Rick.

qualche altra parte la parola chiave Nothing
E' una cosa moolto saggia ma non strettamente necessaria.
A parte il caso del A tiene in vita B e B tiene in vita A, gli oggetti
vengono distrutti automaticamente alla fine del programma con una sequenza
inversa a quella di creazione.
Salve
                    Dbg


Sei pronto a mettere in mano la salute delle tue applicazioni e la memoria
dei tuoi pc all'ormai famoso GarbageCollector di vb? Io, no. Inoltre, fior
fiore di manuali C insegnano che dopo una malloc č buona cosa chiamare un
free per restituire cioň che era stato preso in prestito anche se il riavvio
della macchina risolverebbe cmq ogni problema (e qui sto evidentemente
scherzando). In effetti nell'ottanta per cento dei casi vb riesce a gestire
da solo i puntatori e la memoria cosě come nell'ottanta per cento dei casi
le conversioni implicite di tipo consentite da vb non causano errori. Resta
il fatto che se cadi nell'altro venti per cento č possibile che tu debba
perdere intere giornate per capire cosa sta andando storto solo perché la
tua pigrizia (intrinseca in programmatore vb, me compreso) ti ha impedito di
inserire un cdbl al momento opportuno. Ritengo sia buona norma restituire
ciň che abbiamo chiesto e non aspettare che chi ce l'ha prestato se lo venga
a riprendere anche se siamo sicuri che ciň avverrŕ.
Ciao, Rick.

a riprendere anche se siamo sicuri che ciò avverrà.
Si
La mia grande pigrizia, estremamente sviluppata, si rifiuta di tenere il
conto di tutti gli oggetti che creo (ho una mia classe che viene istanziata
tante di quelle volte, che quando ho debuggato l'inizialize della classe ho
consumato i tasti F8 F5 e soci).
Siccome la mia pigrizia si rifiuta di correre dietro ai bug strani, ho
risolto il problema facendo un uso intensivo delle classi e degli eventi
inzialize e terminate, che sono sicuro che vengono sempre chiamati (99,99%
dei casi).
Poi faccio un uso di questi classi molto molto garibaldino.
Ciao
                    Dbg