Newsgroup: it.comp.lang.visual-basic
Titolo: Problemino con una classe...

Salve!!!! :)))
Sto giocando un pò con VB( giocando nel senso che non sono molto esperto e
lo devo usare per un programma da dare ad un cliente ), ed ho scritto la
seguente cosa:
Property Get Active() As Boolean
  If PersCollection <> Nothing Then
    Active = (PersCollection.Count <> 0)
  Else
     Active = False
  End If
End Property
Però VB protesta... io in Delphi scrivevo
if Assigned( PersCollection ) then...
In VB come devo fare?
Grazie in anticipo,
Andrea

 if Assigned( PersCollection ) then...
  If Not IsEmpty(PersCollection ) Then
ciao
ugo

 ciao ugo
Ciao,
Andrea

   If PersCollection <> Nothing Then
if not (PersCollection is Nothing) then
Giacomo.

 If Not (PersCollection Is Nothing) Then
In effetti, rileggendo la tua richiesta, probabilemnte
nel tuo caso è più utile is nothing:
Isempty verifica se una variabile è dichiarata ma non inizializzata.
(quindi se è una variant)
Is nothing, restituisce  se una variabile oggetto è referenziata.
Nothing è una keyword usata per disassociare una variabile
oggetto con l'assegnazione:
set pippo= nothing
Se tu la usi come nel tuo caso per testare un'espressione
di tipo, produci un errore di runtime.
Per testarla devi, in questo caso usare uno dei due costrutti:
is nothing
oppure typename = "Nothing" (nota che il case del typename è importante)
Ricapitolando:
Se tu devi verificare se la collection pur dichiarata non è inizializzata
devi usare isempty (in questo caso la dichiarazione si riferisce
ad una variant)
Se la variabile è dichiarata come collection, ma l'oggetto non è
inizializzato devi usare la "is nothing" o la typename="Nothing"
Ma se la variabile è dichiarata come collection e referenzia un
oggetto il risultato sarà sempre falso.
vedi il seguente esempio:
Private Sub Command1_Click()
    Dim PIPPO ' dichiarata ma non inizializzata
    debug.print isempty(pippo)     ' vero: è empty (variant)
    Debug.Print TypeName(PIPPO) = "Nothing"    ' falso: non è "Nothing"
    debug.Print PIPPO Is Nothing  ' qui darà errore! la var NON è un
oggetto!
end sub
Private Sub Command2_Click()
    Dim PIPPO As Collection        ' dichiaro la variabile tipizzata
    Debug.Print isEmpty(pippo)     ' falso: non è empty (variant)
    Debug.Print TypeName(PIPPO) = "Nothing"    ' Vero: la var è un oggetto
ma non referenzia alcun oggetto
    debug.Print PIPPO Is Nothing      ' Vero: la var è di tipo "Nothing"
    Set PIPPO = New Collection        ' assegno l'oggetto
    Debug.Print TypeName(Pippo) = "Nothing"    ' falso: il tipo è
"Collection"
    Debug.Print PIPPO Is Nothing        ' falso la variabile referenzia un
oggetto
    Set PIPPO = Nothing        ' distruggo l'oggetto
    Debug.Print TypeName(PIPPO) = "Nothing"    '...
    Debug.Print PIPPO Is Nothing    '...
End Sub
...spero di essere stato chiaro.   ;-)
ciao
ugo

 ugo
Ciao
Andrea


alla fine credo che per il tuo controllo sia sufficiente testare con:
if (PersCollection Is Nothing) then
p.s. tieni presente che se hai dichiarato usando:
dim PersCollection as new collection
i controlli con Nothing ed eventualmente Empty danno Falso,
in questo caso devi verificare la proprietà count, che inizialmente è
a 0.
--
bye BlackMagic
ICQ#:85485468

 a 0.
E' qui il punto, io il new lo faccio nella
Public Sub Create()
  Set PersCollection = New Collection
End Sub
quindi finché non si chiama la create resta comunque non inizializzata.
Andrea

 quindi finché non si chiama la create resta comunque non inizializzata.
esatto fino a che non richiami la tua sub Create la collection non è
istanziata
e pui testarla col nothing, solo dopo la Create puoi accedere ai suoi
metodi/proprietà e a questo punto il test
PersCollection Is Nothing restituisce False
