Newsgroup: it.comp.lang.visual-basic
Titolo: Domanda facile facile

In VB6 é possibile annidare dei costrutti Case? Oppure bisogna
alternarli con if-then-else?
Ad esempio:
Select Case n
  Case 1
    Select Case m
       Case "a"
         Select Case x
            Case "Ciao"
              ....
            Case "Ciccio"
              ....
         End Select
       Case "b"
          ...
    End Select
  Case 2
    ...
  Case 3
    ...
   .
   .
   .
End Select
a me non funge...
Se volete posto il codice.
Ciao
Teo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 [...]
    Emergo (temporaneamente ;-) ) dal lurking... ho sbattuto contro questo
problema proprio 5 minuti fa. Su MSDN si legge:
"Le istruzioni Select Case possono essere nidificate. A ciascuna istruzione
Select Case nidificata deve corrispondere un'istruzione End Select."
Eppure una annidazione di select case semplice semplice continua a dare
errore.
Qualcuno sa dire come fare (e se si puň)?
Ciao e grazie
    Giovanni

A me continua a non andare...
Se intervallasi con costrutti if-then-else che succederebbe?
Cioé ad esempio
Select Case n
   Case 1
      if c="a" then
         Select Case x
           Case "Ciao"
               ....
           Case "Pippo"
               ....
         End Select
      else if c="b" then
         ...
      else if c="c" then
         ...
      End If
   Case 2
     ....
   Case 3
     ....
End Select


 A me continua a non andare...
Avrai dimenticato qualche EndSelect.
Posta il codice.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

 Teo
ciaociao


 Ad esempio:
E provare in un progetto anzichè nel NG?
Se non va ci sarà un motivo
- definisci "non va"
- va in errore? quale?
- non funziona per logica errata? VB offre anche la possibilità di debug!
Ciao

Ecco il codice:'l'ho aggiornato cn l'if-then-else, ma non va uguale.
Dopo
Al primo Case, il compilatore esce ritornado l'errore "Type mismatch".
Le variabili sono tutte ok, ho controllato e ricontrollato
piú volte.Coí come i tipi delle variabili
---------------------------------------------------------------
For Each Foro In mFori
   If Foro.CodComponente = Elemento.Codice Then
       Select Case Forma.Codice
          Case "A" Or "AS" Or "AO" Or "AV" Or "B" Or "BO"
               If Left(Foro.CodComponente, 5) = "Fianc" Or
Left(Foro.CodComponente, 5) = "Inter" Then
 
                    If rsd!ProgCode = "Spine_Lato_Spine" Then
                            rsd.MoveNext
                    End If
 
               ElseIf Left(Foro.CodComponente, 5) = "Cielo" Or
Left(Foro.CodComponente, 5) = "Fondo" Or _
                  Left(Foro.CodComponente, 5) = "Parti" Then
                    If rsd!ProgCode = "Spine_Lato_Faccia" Then
                       rsd.MoveNext
                    End If
               End If
           Case "C" Or "CS" Or "CO" Or "CV"
               If Left(Foro.CodComponente, 5) = "Fianc" Or
Left(Foro.CodComponente, 5) = "Parti" Then
 
                    If rsd!ProgCode = "Spine_Lato_Faccia" Then
                       rsd.MoveNext
                    End If
               ElseIf Left(Foro.CodComponente, 5) = "Cielo" Or
Left(Foro.CodComponente, 5) = "Fondo" Or _
                 Left(Foro.CodComponente, 5) = "Inter" Then
                    If rsd!ProgCode = "Spine_Lato_Spine" Then
                       rsd.MoveNext
                    End If
               End If
           Case "D" Or "DO" Or "DV"
               If Left(Foro.CodComponente, 5) = "Cielo" Then
                     If rsd!ProgCode = "Spine_Lato_Spine" Then
                        rsd.MoveNext
                     End If
               ElseIf Left(Foro.CodComponente, 5) = "Fondo" Or
Left(Foro.CodComponente, 5) = "Parti" Then
                     If rsd!ProgCode = "Spine_Lato_Faccia" Then
                        rsd.MoveNext
                     End If
               ElseIf Left(Foro.CodComponente, 5) = "Fianc" Or
Left(Foro.CodComponente, 5) = "Inter" Then
                     If (rsd!ProgCode = "Spine_Lato_Spine" And
rsd!ElementSide = 6) Or _
                      (rsd!ProgCode = "Spine_Lato_Faccia" And
rsd!ElementSide = 4) Then
                        rsd.MoveNext
                     End If
               End If
     End Select
   End If
Next Foro
-----------------------------------
Grazie
Teo


           Case "A", "AS", "AO", "AV", "B", "BO"
Fallo in ogni Case, poi riprova e vediamo se altro non va

 Al primo Case, il compilatore esce ritornado l'errore "Type mismatch".
Sai che Or č un'operazione fra numeri, vero?

> Sai che Or č un'operazione fra numeri, vero?
Pensavo fosse un operatore logico utilizzabile anche per stringhe.


 Pensavo fosse un operatore logico utilizzabile anche per stringhe.
E pensare che bastava leggere la guida!
Case "A", "B"...

 Pensavo fosse un operatore logico utilizzabile anche per stringhe.
Che "logica" può esserci fra stringhe, testi, frasi e parole?

comunque l'operatore Or tra stringhe, nel costrutto if funziona, mentre
nel select case no...
chi me lo sa spiegare?


 chi me lo sa spiegare?
MA LI LEGGI I MESSAGGI DI RISPOSTA O NO???
E la GUIDA IN LINEA la VOGLIAMO LEGGERE O NO????
Sei un TROLL o NO???

 chi me lo sa spiegare?
Io! Fra stringhe troverai un OR (o un AND) solo in un comando (stringa)
SQL...
ehm... segui i consigli di Zanna

Non sono un troll! :(
Scusate se sono stato inopportuno, ma sono un quasi esordiente di VB.
Grazie ancora.


 comunque l'operatore Or tra stringhe, nel costrutto if funziona,
e infatti non è tra stringhe ma tra "condizioni" che restituiscono un valore
booleano (0-1)


 chi me lo sa spiegare?
T' o spieco io, t' o spieco... :-)))
L'operatore OR nella IF non ti permette di scrivere
    IF MiaStr = "X" Or "Y" Or "Z" ...
ma devi scrivere
    IF MiaStr = "X" Or MiaStr = "Y" Or MiaStr = "Z" ...
in questo modo L'ESPRESSIONE <MiaStr = "X">
è di fatto un operatore logico, infatti può assumere solo
i valori 'Vero' o 'Falso'.
--
Er Roscio.

Difatti é questa la risposta che alla fine mi sono dato anch'io.
grazie ancora 1 vola.
