Newsgroup: it.comp.lang.visual-basic
Titolo: assegnazioni multiple

tempo fa chiedevo se era possibile fare in vb
a=b=1
e come temevo mi si e' detto di no.
solo che ora temo di non capire questa sub di randy birch (vbnet):
Private Sub chkSelectMode_Click()
   Dim state As Long
  'state will be true when the checkbox
  'style is 1 (checked) or False when
  'unchecked
   state = chkSelectMode.Value = 1
  'set the new listview style
   Call SendMessageLong(ListView1.hwnd, _
                        LVM_SETEXTENDEDLISTVIEWSTYLE, _
                        LVS_EX_FULLROWSELECT, state)
End Sub

    state = chkSelectMode.Value = 1
state = True se chkSelectMode.Value = 1
La funzione sottostante, che modifica lo stile di un oggetto
ListView, chiede se la proprietà LVS_EX_FULLROWSELECT
debba essere impostata a True o a False.


    state = chkSelectMode.Value = 1


 >    Dim state As Long


 
o forse il vb non e' cosi scemo ( vedi quello che ho detto sopra )




avrebbe detto b. pascal (*)
Appunto...
Ciao

 ci si potrebbe aspettare
grazie per la spiega come al solito dettagliatissima.
solo, ho provato l'unica parte +- provabile in vb:
    Dim x, y
    x = 10
    y = Not x
    Label1 = "X = " & x & " -- Y = " & y
---> X = 10 -- Y = -11
vb ha delle ragioni che la ragione non conosce,
avrebbe detto b. pascal (*)
(*) blaise, non borland :)

 ci si potrebbe aspettare
Il Not del Basic (come quello di molti altri linguaggi) è un operatore
logico che inverte il segno dei bit. Poiché 10 = 00001010 (supponendo che
sia, per brevità, un bye), Not 10 produce 11110101 = &HFFF5 = -11.
Non è per niente una cosa strana. Lo stano è l'operatore C che ritorna
sempre 0/1 (evidentemnete assume che l'operando != 0 sia 11111111).
----------------------------------------------------------------------
Stefano Minardi
Zetesis: 
zet...@mclink.it
----------------------------------------------------------------------

     x = 10


 se 255 è un long Not 255 = -211111111!
verio, l'unica critica che muovo a VB è, come al solito, di essere poco
chiaro; in C/C++ esistono due set di operatori binari, logici e bitwise; in
VB l'assenza di una simile separazione può generare qualche disastro;
ad esempio, si supponga di voler controllare un errore ad un certo punto del
codice; in VB si può scriver qualcosa del tipo
  If (Err.Number) Then
    ' c'è un codice di errore <> 0
  End If
tale sintassi va benissimo, infatti viene valutato True un qualsiasi valore
diverso da 0; se invece provo a scrivere
  If (Not Err.Number) Then
    ' errore!
  End If
il significato di tale espressione non è decisamente quello atteso (sarebbe
vera solo e soltanto nel caso in cui Err.Number valesse -1);
ora, al di la de fatto che basterebbe mettere un banalissimo "=0" invece di
usare il "Not", bug del genere ne ho visti molti (in effetti è più
scorrevole le prima sintassi che dovrebbe suonare come "..se non c'è errore
allora...") soprattutto coi valori di ritorno di funzioni API (del tipo "If
Not IsWindow(hWnd) Then...");
ciao

 > ci si potrebbe aspettare


Not IsWindow(hWnd) Then...");
Sempre vero, ma basta ricordarsi una semplicissima regoletta:
If TypeOf Dato Is Number Then
    Use Dato <> 0 or Dato = 0
Endif
If TypeOf Dato Is Boolean Then
    Use Dato = True or Dato = False or Dato or (Not Dato)
Endif
Ciao

 (il punto esclamativo è l'operatore NOT logico del C/C++)
STOOOOOOOOOOP!!!
Il NOT nei linguaggi simil-C si può scrivere in due modi:
!
~
Il primo restituisce l'inverso dello stato della variabile (ignoro il termine
tecnico). Se la variabile è una stringa non nulla, un numero diverso da zero o
un oggetto, !variabile restituisce false, altrimenti, se la variabile è uguale a
"", 0, null o undefined restituisce true. Si usa principalmente negli if.
Il secondo è il vero NOT logico, e opera sui bit come ci si aspetterebbe


esatto, fatto sta che il not logico è ! mente il not bitwise è ~
ciao

 e chi si muove?
Scusa se sono stato brusco, ma di C conosco a malapena gli operatori, e li ho
imparati in modo così sofferto (per capire la differenza tra = e == ci ho messo
un mese, per capire a cosa servissero <<, >> e >>>, una settimana ciascuno) che
ogni possibilità di perdere questa sicurezza mi manda in crisi...