Newsgroup: it.comp.lang.visual-basic
Titolo: Uscire da una sub

Ciao a tutti.
Ho l'esigenza di uscire da una subroutine, ma il comando
dev'essere dato in un'altra sub. Come posso fare?
Grazie a tutti coloro
che mi sapranno essere di aiuto!
Watson.
--------------------------------
Inviato via 
http://usenet.iol.it

 Watson.
La prima cosa che mi viene in mente è quella di gestire una variabile
globale che la prima sub verifica e che la seconda sub imposta.
Esempio:
Dim blnExitSub As Boolean
Sub PrimaSub()
    blnExitSub = False
    Do Until blnExitSub
        ...
        DoEvents
    Loop
End Sub
Private Sub cmdCancel_Click()
    blnExitSub = True
End Sub
Ciao!
--
Esteban
Hosted by 
www.seber.it
(Remove nonspammare for reply)

 globale che la prima sub verifica e che la seconda sub imposta.
La tua soluzione è "pulita" ma, se vogliamo guardare il classico
capello, non è "strutturata".
L'ideale sarebbe passare alla funzione chiamata un parametro che
stabilisca se e quando chiudere la funzione. In poche parole, il tuo
binExitSub dovrebbe essere un parametro da passare alla sub e
non una variabile globale (le variabili globali sono un peccato
mortale in programmazione strutturata, proprio come i GoTo !!!... :-)))
--
Er Roscio.

 mortale in programmazione strutturata, proprio come i GoTo !!!... :-)))
Beh, ho immaginato che la prima sub esegua un loop e non si sa quando il
loop debba essere terminato.
Infatti il mio esempio era quello di un Command che possa interrompere
l'esecuzione di un loop.
In questo caso, come posso passare un parametro che stabilisca quando
chiudere la funzione se non so a priori quando la funzione deve essere
interrotta?


 interrotta?
ragazzi, io ci provo, mal che vada mi tirate qualcosa dietro :)
potresti dichiarare una variabile Static nella tua funzioncina ed
aggiungerci un parametro opzionale:
private sub funzioncina(optional termina as boolean = false)
    static terminato as boolean
    terminato = termina
    do until terminato
        ...
        doevents
    loop
end sub
quando chiami per la prima volta la funzione non gli passi alcun parametro,
mentre quando la chiami per fermarla gli passi true come parametro.
in questo modo il primo ciclo si interrompe per un attimo per lasciare
spazio all'esecuzione del nuovo, il nuovo setta terminato = true e finisce
immediatamente. quello che avevi interrotto precedentemente trova terminato
(che è static e quindi dovrebbe mantenere il suo valore) = true e quindi la
smette di ciclare. risultato: hai interrotto il ciclo :).
miiiiiii, che casino :)
spero che almeno qualcuno l'abbia capito, e che tra quei pochi ci sia anche
qualcun'altro che mi dice che ho scritto una stupidata :).
ciao, assa.
--
Sito Comune
http://www.it-lang-vb.net/

 interrotta?
Questa è la definizione di un evento.
Inventati un evento da testare all'interno del loop
e dall'esterno lo attivi quando ti serve.
--
Er Roscio.

 ha scritto nel messaggio
news:a60l9k$alq21$1...@ID-60516.news.dfncis.de...

Ho capito benissimo :-) ed è una grandissima idea!!!!
MSDN: "Le variabili dichiarate con l'istruzione Static mantengono il loro
valore finché il codice è in esecuzione."
E una volta finita la Sub si dissolvono nel nulla :-)
Grande ASSA!!!!
Ciao
--
Timothy Redaelli
timothy(dot)redaelli(at)email(dot)it
-----------------------------------
Links:
Sito Comune: 
www.it-lang-vb.net
MSDN: 
msdn.microsoft.com