Newsgroup: it.comp.lang.visual-basic
Titolo: Determinare se una variabile byte è vuota

Usando vb6 mi trovo a fare un controllo su una variabile
precedentemente dimensionata come byte, nel caso devo determinare se
questa è vuota.
Ho provato con
dim pippo as byte
..... codice ......
if pippo = "" then
oppure
if pippo = chr(0) then
oppure
if pippo = vbnull then
Ma mi viene sempre restituito l'errore:
Tipo non corrispondente.
come posso fare?

 Tipo non corrispondente.
pippo = Nothing ?
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

 ha scritto nel messaggio 
news:1183029574.9...@u2g2000hsc.googlegroups.com...

un byte è un numero da 0 a 255.
Ciao 

 un byte è un numero da 0 a 255.
E quindi Nothing è il valore di default, cioè 0. Almeno in 
VB.NET
.


 E quindi Nothing č il valore di default, cioč 0. Almeno in 
VB.NET
.
Qui mi stupisci :)
Byte č un value type, non puň essere Nothing.
Ciao 

 Byte è un value type, non può essere Nothing.
Dalla guida dell'SDK
----
Nothing (Visual Basic)
Rappresenta il valore predefinito di qualsiasi tipo di dati.
Se si assegna Nothing a un insieme di variabili, questo viene impostato 
sul valore predefinito per il relativo tipo dichiarato. Se nel tipo si 
trovano membri variabili, questi vengono tutti impostati ai valori 
predefiniti corrispondenti. Questa condizione è illustrata nell'esempio 
che segue.
Public Structure testStruct
     Public name As String
     Public number As Short
End Structure
Dim ts As testStruct, i As Integer, b As Boolean
ts = Nothing
' The preceding statement sets 
ts.name
 to "" and ts.number to 0.
i = Nothing
b = Nothing
' The preceding statements set i to 0 and b to False.
-----
Ne deduce che fare:
Dim b As Byte
If b = 0 Then
...
End If
Oppure:
Dim b As Byte
If b = Nothing Then
...
End If
E' la stessa cosa.



Ok, mi do una tappata in testa: pazzesco... 
vb.net
 interpreta il nothing 
come il valore di default di un value type.
In questo č persino peggiorato rispetto a vb6.
Comunque occhio, Nothing viene poi compilato come 0, non č un valore che 
indica che l'oggetto non č inizializzato.
Ciao 

 come il valore di default di un value type.
Sì, è così. Avevo provato :-)


 ' The preceding statements set i to 0 and b to False.
'Sta roba è di una pericolosità senza limiti.
String in vb non può essere Nothing, nel senso che una stringa di default 
dovrebbe valere Nothing e non "" che sono due cose ben diverse dato che le 
stringhe sono dei reference type.
Tant'è che hanno aggiunto il metodo IsNullOrEmpty alla classe stringa.
Invece in vb dire che vale "" o Nothing è la stessa cosa.
Le strutture confondono ancora un po' le acque: non posso vedere se una 
struttura vale Nothing, però posso assegnargli Nothing per azzerarne i 
membri...
Che pastrocchio... :(
Ciao 

 'Sta roba è di una pericolosità senza limiti.
LOL... sono arrivato un po' in ritardo ma, nella mia ignoranza, ho 
scoperto la classe Nullable :-)
Si può fare così:
Dim b As Nullable(Of Byte)
b = Nothing
If Not b.HasValue Then
    MessageBox.Show("b è NULL")
End If
In VB9 si potrà dichiarare così (credo...):
Dim d As Byte?
Aggiungendo un punto interrogativo dopo il nome del tipo che si vuole 
rendere "nullabile".
