Newsgroup: it.comp.lang.visual-basic
Titolo: if ...

Ho un problemuccio:
ho iniziato un ciclo IF...THEN...ELSEIF...ELSEIF...ELSEIF...ELSE...ENDIF
entro una routine.  Questo mi dovrebbe permettere di eseguire un solo blocco
di istruzioni (comprese entro i vari ELSEIF) per ogni volta che richiamo la
funzione a seconda delle condizioni (credo)
Ma come faccio a fare sì che, quando mi serve, l'ELSEIF successivo sia
abilitato subito dopo quello in cui sono, senza dovere aspettre di
richiamare un'altra volta la routine???
mi spiego meglio con una specie di esempio:
t all'inizio è 1
private static sub Cacchio()
if t=1 then
    t=t+1
elseif t=2 then
    t=t+2
elseif t=4 then
    t=t+10
else: t=1
endif
end sub
così la prima volta T diventa 2, la seconda 4 poi 14 poi ancora 1. (da
quello che ho capito)
ma se,solo per un particolare caso, a me serve che dopo la condizione del
primo ELSEIF si eseguano i blocchi di istruzioni compresi negli altri
ELSEIF, in fila come sono scritticome faccio??
(Ho una condizione in ogli blocco di ELSEIF che se è vera mi salta tutti i
successivi elseif, ma se è falsa me li dovrebbe fare tutti in fila)
commofo?
scusate se mi sono espresso male, ma non ho ben capito neanche io cosa ho in
mente.
grazie in anticipo
Phanto

 mente.
beh, allora.... :)

mente.
^____^
Anche perché, se tu vuoi che lui esegua tutte i casi, allora basta che gli dica t=14, ovvero l'ultimo caso.
Se non ho risolto il tuo problema, fammi sapere, magari cercando di spiegare cosa vuoi ottenere....
Ciao,
Moreno
#sirri#@
morenosoft.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.morenosoft.com/MSVBSite/
Home Page - 
http://www.geocities.com/SiliconValley/Bridge/1414/
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

mi spiego meglio con una specie di esempio:
Fai cosi':
private static sub Cacchio()
    Select case t
    case 1: Goto P1
    case 2: Goto P2
    case 3: Goto P3
    end select
    t=1
    Goto Pout
    P1: t=t+1
    P2: t=t+2
    P3: t=t+10
    Pout:
exit sub
Ciao
By -MES-   Maronese Ettore
http://ilmes.freeweb.org
(con OCX per stampare i recordset)
Sito Comune di programmatori Visual Basic
http://www.murialdo.it/it_lang_vb


Devi lavorare con piu' IF in cascata senza la clausola ELSEIF nel tuo caso.
Il tuo esempio non e' molto chiaro cmq cerchero di trasformartelo in modo
che faccia quello che tu voglia.
IF T=1 Then
    T = T+1   ' ( + tutto quello che devi fare se T=1 )
    if particolarecaso = false then exit sub
end if
IF T= 2 Then T=T+2    ' ( + tutto quello che devi fare se T=2 )
IF T = 4 Then T=T+10  ' ( + tutto quello che devi fare se T=4 )
if T <> 1 And T <> 2 and T <> 4 then T=1
cmq se spieghi meglio la tua problematica penso che la soluzione sia piu'
facile darla.
Ciao.
Ven.


Vi prego....... il GOTO NOOOOOOOOO !!!!!!!! evitatelo come la peste
!!!!!!!!! ;-))
Ciao.
Ven.

 !!!!!!!!! ;-))
Come mai? Non l'ho mai (o ancora?) utilizzato, ma una reazione cosi' mi
lascia perplesso e dubbioso.
--
ciao
gelty
--
Visita 
http://www.sifor.it
Elimina *toglimi* per le risposte

lascia perplesso e dubbioso.
    Il GOTO serve solo x incasinare il tuo codice sopratutto nella
"leggibilità".
Cerca di evitarlo, io ad esempio da tempo ho dimenticato che esiste......
idem per il gosub.
Pensa che da noi vige un motto sopratutto su programmi scritti In cobol, Rpg
, PL1 ecc. dove di GOTO o istruzioni equivalenti se ne trovano in abbondanza
ed in alcuni casi sono quasi e sottolineo il quasi obbligate :
1a legge : La bravura di un programmatore e' inversamente proporzionale al
numero di GOTO che mette nei programmi ;-)) ( seguono altre svariate leggi
hehehehe)
Come ti dicevo, questo in linguaggi Top-Down di vecchia generazione ,
figuriamoci in VB !!!
Se vuoi un buon consiglio fai come dicevo sopra, dimentica che esiste tale
istruzione !.
Ciao
Ven.

istruzione !.
E' qui che si vede la defferenza!
Io cerco sempre il costrutto migliore per leggibilita', velocita',
manuntenzionamilità.
Il costrutto che ho usato, paragonato a qualsiasi altro, è senza dubbio
quello che unisce al meglio queste tre componenti.
Trovami un costrutto migliore e poi parliamone.
Ma deve funzionare sotto ogni condizione, senza che supposizioni di legami
matematici tra un possibile risultato ed un'altro.
Oltretutto, chi fece la domanda iniziale non spiego' bene casa dovava fare,
quel costrutto funziona sempre, qualunque cosa voglia fare.
Salutoni
Ettore   By -MES-

exit sub
ed e' quello che questo codice ugualmente fa...... senza l'incriminato GOTO
;-))
oldvalue = t
If oldvalue >= 1 And oldvalue <= 3 Then
   If oldvalue = 1 Then t = t + 1
   If oldvalue <= 2 Then t = t + 2
   If oldvalue <= 3 Then t = t + 10
 Else: t = 1
End If
In entrambi le Function, il valore della Var T in uscita e' sempre
uguale.....qualsiasi sia il suo valore iniziale.......
Ciao
Ven.