Newsgroup: it.comp.lang.visual-basic
Titolo: byref & byval

Salve sono Tony č la prima di una lunga serie di richieste .....di aiuto!
Sono un novellino di Vb
sapreste descrivermi il piu semplicemente possibile la differenza di
chiamata ad un modulo standard di uan routine Sub o Function??
Se possibile quando conviene usare una routine Sub e quando una Function??
Grazie

 Salve sono Tony è la prima di una lunga serie di richieste .....di aiuto!

Bè anch'io non ne sò tanto, però posso dirti solo che una sub a differenza
della function non può restituire un valore, cioè:
sub moltiplicatre ( X as integer)
X * 3
end sub
function verifica_X (byval X as date) as boolean
if isdate (X) then
verifica_X = true
else
verifica_X = false
end if
end function
Come dicevo, è da poco + di 6 mesi che frequento VB6 e quindi è
possibilissimo che abbia detto una XXXXXXX, se ti aiuta, tanto di meglio 8)
Ciao

 Salve sono Tony č la prima di una lunga serie di richieste .....di aiuto!


Elimina NoSpam per scrivermi<

errata corrige:       ( l'errore č la regola )
Un funzione restituisce UN valore ( numerico, booleano, .. )
Un Sub a priori non restituisce nulla.
Se vogliamo far restituire piů valori ad una Sub dobbiamo dichiarare
Variabili ByRef, oppure, dio non voglia, usare Variabili globalmente o
localmente < globali >.
1) 
........
corpo della routine chiamante:
.........
dim a as integer, b as string, c as long
...........
a = 17
b= " bdsjydhflhfg"
.......
c = funz(a,b) * pi/2           ' chiamata alla funzione e utilizzo del
valore 
                                      ' restituito dalla medesima, e in cui
si
                                      'identifica:    funz === funz
.........
end  ... (sub)
public function funz(a as long,b as string) as long
         funz = a * len(b)
end funz
2)
........
corpo della routine chiamante:
( la routine chiamata, restituisce due risultati ( rc,rd ), che devono
essere
 dichiarati ByRef affinchč risultino utilizzabili in qualsiasi routine
chiamante )
dim a as integer, b as string, c as single, d as string
...........
a = 17
b= " bdsjydhflhfg"
Call routine (a,b,rc,rd)         
c = rc * pi/2                ' caso equivalente a quello sopra


errata corrige:       ( l'errore č la regola )
Un funzione restituisce UN valore ( numerico, booleano, .. )
Un Sub a priori non restituisce nulla.
Se vogliamo far restituire piů valori ad una Sub dobbiamo dichiarare
Variabili ByRef, oppure, dio non voglia, usare Variabili globalmente o
localmente < globali >.
1) 
.........
corpo della routine chiamante:
..........
dim a as integer, b as string, c as long
............
a = 17
b= " bdsjydhflhfg"
........
c = funz(a,b) * pi/2           ' chiamata alla funzione e utilizzo del
valore 
                                      ' restituito dalla medesima, e in cui
si
                                      'identifica:    funz === funz
..........
end  ... (sub)
public function funz(a as long,b as string) as long
         funz = a * len(b)
end funz
2)
.........
corpo della routine chiamante:
( la routine chiamata, restituisce due risultati ( rc,rd ), che devono
essere
 dichiarati ByRef affinchč risultino utilizzabili in qualsiasi routine
chiamante )
dim a as integer, b as string, c as single, d as string
............
a = 17
b= " bdsjydhflhfg"
Call routine (a,b,rc,rd)         
c = rc * pi/2                ' caso equivalente a quello sopra
d = rd                         ' circa 1/3  :-)) di b a partire
dall'inizio.
...........
end .. (sub)
private sub routine(a as long, b as string, byref c as long, byref d as
string)
   dim e as integer
................
   c = a * len(b)
   e = len(b) \ pi                    ' divisione intera     :-))
   d = mid(b,1,e)                    
...............
