Newsgroup: it.comp.lang.visual-basic
Titolo: Goto da una routine ad un'altra

è possibile passare il goto da una routine all'altra
specificatamente:
è possibile passare il goto da una routineB di una (maschB) aperta
in modo acDialog ad una routine (maschA che ha aperto la B)
l'uso normale del Goto è sempre dentro alla stessa routine
ma si puo indirizzare verso un punto di un'altra routine?
----------------------------------------------------------------
-caso da risolvere
Private Sub AAA (-della MascheraA-)
          If x>0 then
            Apro la maschera B in modo acDialog e prima di chiudere Goto
puntoZ
          End If
         …..qui ho del codice
         punto Z:
 End Sub
----------------------------------------------------------------
(puntoZ può stare in qualsiasi punto)
(routine di access solo che nel newsgroup al momento
non ho trovato soluzioni)
credo che l'equivalente in Vb sia:
----------------------------------------------------------------
-caso da risolvere
Private Sub AAA (-della MascheraA-)
          If x>0 then
            Apro una form B con scelta obbligata prima di poter
ripassare alla form A
            e prima di chiudere nella sua routineB metto Goto puntoZ
         End If
         …..qui ho del codice
         punto Z:
 End Sub
----------------------------------------------------------------

          ...qui ho del codice


 specificatamente:
NEL 2002 C'E' ANCORA GENTE CHE USA LE GOTO??????
IO LE ODIO ANCHE SOLO PER I CONTROLLI DI ERRORE!!!
Tutte le volte che scrivo On error GoTo vi viene l'orticaria, ma in questo
caso posso solo farmela passare :-))))
Comunque se vuoi un consiglio riscrivi tutto e trova un modo per evitare in
modo ASSOLUTO le GOTO, rendono difficile la lettura del codice e creano solo
problemi, poi non sono un modo strutturato di programmare.
Ciao.

 ma si puo indirizzare verso un punto di un'altra routine?
a parte il discorso di usare goto, cmq no non puoi farlo...Anche perchè
sarebbe stupido,al limite si usa una funzione visto che è esterna

 ma si puo indirizzare verso un punto di un'altra routine?
se non ti dai alla gastronomia,
l'uso normale del goto e' seppellirlo.
j.spaghetti.code

si ma come posso risolverlo?
inoltre se non uso goto come faccio a seguito di un if
a passare in un'altra parte del codice
in qualche modo lo devo pur fare
se poi bisogna stare attenti ad usarlo è un altro discorso
comunque nel mio caso come posso fare
mi è stato indicato l'uso di una funzione
come si fa


  End Sub
Io direi semplicemente:
Private Sub AAA (-della MascheraA-)
          If x>0 then
            Maschera.Show vbModal
            if (Maschera.ModalResult = vbOk) Then
                ' il codice va qui! non in un altro ramo
                ' altrimenti che cavolo ti serve controllare
                ' l'esito della maschera???
            End If
            Unload Maschera ' ce la togliamo dalla memoria, eh?!
          End If
          ' ...qui ho del codice
          ' No, qui volevi mettere il codice, ma in seguito
          ' a un rinsavimento inaspettato lo metti nel punto giusto :)
          ' punto Z: Questo non serve e ce lo togliamo di torno
End Sub
In Maschera definisci una var. pubblica ModalResult as Long che userai come
valore di ritorno ad es. nel Click del bottone "Ok".
Ciao

 si ma come posso risolverlo?
Non ho letto il tuo codice però ti posso dire che il modo mogliore di
lavorare secondo me è di ridurre il programma in routine e funzioni più
piccole possibile che si richiamano a vicenda (così dice il manuale di Vb
che ho studiato), ovviamente senza esagerare.

 writes:
j> l'uso normale del goto e' seppellirlo.
--
Edsger W.   Dijkstra's note in  the March 1968 "Communications  of the
ACM", "Goto  Statement Considered Harmful",  fired the first  salvo in
the structured programming wars (vedi`
http://www.acm.org/classics'
).
--
Harmful non  e` bad. Ci sono rarissimi  casi in cui e`  meglio un goto
che una "convoluzione strutturata".
Nel caso originario mi pare bastasse un bel if-then-else, anyway...
-- 
Gian  | main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Uberto|                        David Korn, 1987 ioccc best one liner 
Lauri |-------------------------------------------------------------------
(aka saint) >>Vedere X-Nospam nell'header - See X-Nospam field in Header<<
 

 Nel caso originario mi pare bastasse un bel if-then-else, anyway...
o un select case, o un optbutton, o la qualunque ( escluso il goto :)
imho, l'unico goto buono e' il motorista honda.
j.go2