Newsgroup: it.comp.lang.visual-basic
Titolo: Ritorno di piu Valori in una Funzione?

Si possono far ritornare piu' valori da una Funzione in Vb?
Grazie
by Marlbory

 by Marlbory
Andrea

 Si possono far ritornare piu' valori da una Funzione in Vb?
Vedi ByRef
Ciao
Alberto
-- 
Santo cielo, Magnum, si può sapere cos'è questo baccano?
Higgins, posso spiegarle...
Credo non sia necessario.
Zeus, Apollo, a voi...

 ha scritto nel messaggio
news:bb2eij$50sdv$1...@ID-170738.news.dfncis.de...


 Si possono far ritornare piu' valori da una Funzione in
Vb?
Non direttamente.
Puoi creare una classe che contenga i valori che vuoi
esportare, e far restituire alla funzione un oggetto di
quella classe (1), oppure puoi passare direttamente le
variabili in cui vuoi che vengano memorizzati i valori di
ritorno della funzione per riferimento alla funzione stessa
(2).
(1) Esempio:
In un modulo di classe (Coppia.cls)
Private mPrimoValore As Single
Private mSecondoValore As Single
Public Property Let PrimoValore [...]
Public Property Get PrimoValore [...]
[... fai tu!]
E la funzione (esempio):
Private Function GeneraCoppiaRandom() As Coppia
    Dim c As Coppia
    Call Randomize(Time)
    Set c = New Coppia
    c.PrimoValore = Rnd()
    c.SecondoValore = Rnd()
    Set GeneraCoppiaRandom = c
    Set c = Nothing
End Function
(2)
Funzione:
Private Sub GeneraCoppiaRandom( _
                ByRef PrimoValore As Single, _
                ByRef SecondoValore As Single)
    Call Randomize(Time)
    PrimoValore = Rnd()
    SecondoValore = Rnd()
End Function
Sub chiamante:
Sub Main()
    Dim primo As Single
    Dim secondo As Single
    Call GeneraCoppiaRandom(primo, secondo)
    MsgBox "Primo: " & CStr(primo) & vbNewLine & _
           "Secondo: " & CStr(secondo)
End Sub
Happy Coding =)
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
Statuto: 
http://www.it-lang-vb.net/docs/Statuto.txt
UGIdotNET - 
http://www.ugidotnet.org

 valori?
Di ritorno "diretto" è da escludere, "indirettamente":
Function Pippo (argomento1 [As ...], argomento2 [As ...], [...,] argomenton
[As ...], risultato1 [As ...], risultato2 [As ...], [...,] risultaton [As
...]) [As ...]

 piu valori?
albe, parlando di clausola byref, ti ha dato una delle soluzioni possibili.
se fai una function
public function Pippo(byref a as integer) as integer
a = 5
pippo = 3
end function
se tu fai
dim r as integer
dim i as integer
r = pippo(i)
alla fine hai che la funzione pippo ti ha restituito due valori...
Salutoni
Sergio
p.s. di solito questa soluzione non mi piace molto....

 ha scritto nel messaggio
news:723Ba.6166$pR3.1...@news1.tin.it...


 Ok... Grazie Tantissimo..
Prego. Per favore "quota". Si risponde sotto al testo citato
e non sopra omettendo le parti del messaggio non essenziali
(convenevoli, firma, saluti, ecc.).
In particolare potevi omettere di riportare il tuo
messaggio.
Per informazioni sul newsgroup sei caldamente invitato a
leggere il Manifesto del newsgroup in calce sotto la firma.
Anche gli altri link sono utili ;)


 Alberto
Andrea

 end function
Array, Collection....
Tutto bello e usato ogni volta che serve.
Ma la risposta va tarata sul soggetto che chiede: a uno che pone un quesito
del genere, parlare di Collection voleva dire mettere in movimento un
mondo...
Ciao
Alberto

Scusatemi se non quoto niente.
Ma una type no?
Ciao
MarLaw

 Ma una type no?
Passa il parametro per riferimento, cioč fornisci un riferimento in memoria
dove risiede la variabile, indi le modifiche vengono riflesse nell'oggetto
effettivo.
es.
Private Sub Command1_Click()
  Dim yy As Integer
    Dim kk As Integer
    Dim dd As Double
        ValoriRiferimento 5, 6, yy, kk, dd
        Debug.Print yy & ";" & kk & ";" & dd
End Sub
Private Function ValoriRiferimento(ByVal x As Integer, ByVal t As Integer,
ByRef y As Integer, ByRef k As Integer, Optional ByRef d As Double)
        y = x + t
        k = x * t
        d = x / t
    End Function
salve
giuseppeD