Select Case Anidado No Funciona Bien


Objetivo: Select Case Anidado No Funciona Bien
Buenas a todos, resulta que el segundo selec case solo le el primer case y luego salta a else case sin leer los case anteriores salvo el primero, porque sera que pasa eso?????
lo descubrí poniendo puntos de interrupción.

estas variables tienen estos valores cuando pasa el error
la variable Combinacion la declare como tipo string (Public Combinacion As String) en FMain
FMain.Combinacion=0123
FMain.EliminadosDEgrupo4=1




Public Sub clasificacionG4()
' TODO: CLASIFICACION G4

FMain.Combinacion = btnTotal_J1.Text & btnTotal_J2.Text & btnTotal_J3.Text & btnTotal_J4.Text

Print FMain.Combinacion
Print FMain.EliminadosDEgrupo4

Select Case FMain.EliminadosDEgrupo4
Case 1 ' SI SE ELIMINA 1 JUGADOR EN EL GRUPO DE 4 ENTONCES...
Select Case FMain.Combinacion
' !!!!!! combinaciones posibles con estos numeros: 3 2 1 0
Case 3021
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Tercero"
Case 3210
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Tercero"
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
Case 2310
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Tercero"
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
Case 2301
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
btnClasificacionJ4.Text = "Tercero"
Case 0231
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Primero"
btnClasificacionJ4.Text = "Tercero"
Case 0312
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Tercero"
btnClasificacionJ4.Text = "Segundo"
Case 0321
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Tercero"
Case 0123 ' aqui deberia caer pero ni siquiera le este case
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
btnClasificacionJ2.Text = "Tercero"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Primero"
Case 2130
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Tercero"
btnClasificacionJ3.Text = "Primero"
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
Case 2103
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Tercero"
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
btnClasificacionJ4.Text = "Primero"
' !!!!!!combinaciones posibles con estos numeros: 2 2 2 0
Case 2220
btnClasificacionJ1.Text = "Empatado"
btnClasificacionJ2.Text = "Empatado"
btnClasificacionJ3.Text = "Empatado"
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
Case 2202
btnClasificacionJ1.Text = "Empatado"
btnClasificacionJ2.Text = "Empatado"
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
btnClasificacionJ4.Text = "Empatado"
Case 2022
btnClasificacionJ1.Text = "Empatado"
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
btnClasificacionJ3.Text = "Empatado"
btnClasificacionJ4.Text = "Empatado"
Case 0222
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
btnClasificacionJ2.Text = "Empatado"
btnClasificacionJ3.Text = "Empatado"
btnClasificacionJ4.Text = "Empatado"
' !!!!!!combinaciones posibles con estos numeros: 2 2 1 1
Case 2211 ' si
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Segundo"
Case 2121
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Primero"
btnClasificacionJ4.Text = "Segundo"
Case 1221 ' si
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Primero"
btnClasificacionJ4.Text = "Segundo"
Case 2112 ' si
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Primero"
Case 1212 ' si
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Primero"
Case 1122
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Primero"
btnClasificacionJ4.Text = "Primero"
' !!!!!!combinaciones posibles con estos numeros: 3 1 1 1
Case 3111
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Segundo"
Case 1311
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Primero"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Segundo"
Case 1131
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Primero"
btnClasificacionJ4.Text = "Segundo"
Case 1113
btnClasificacionJ1.Text = "Segundo"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Segundo"
btnClasificacionJ4.Text = "Primero"

Case Else
' aqui es donde cae !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
File.Save(FMain.DirPartidosAutomaticos & "/" & FMain.Combinacion & " (1 x Grupo4)" & ".codigo", FMain.Combinacion & " (1 x Grupo4) " & FMain.EliminadosDEgrupo4)

End Select

Case 2 ' SI SE ELIMINAN 2 JUGADORES EN EL GRUPO DE 4 ENTONCES...

Select Case FMain.Combinacion
Case 3210
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Segundo"
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
Case 2022
btnClasificacionJ1.Text = "Primero"
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
btnClasificacionJ3.Text = "Primero"
btnClasificacionJ4.Text = "Primero"

Case Else

File.Save(FMain.DirPartidosAutomaticos & "/" & FMain.Combinacion & " (2 x Grupo4) " & ".codigo", FMain.Combinacion)
End Select

Case 3 ' SI SE ELIMINAN 3 JUGADORES EN EL GRUPO DE 4 ENTONCES...

Select Case FMain.Combinacion
Case 3210
btnClasificacionJ1.Text = "Ganador"
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
Case 0213
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
btnClasificacionJ4.Text = "Ganador"
Case Else

File.Save(FMain.DirPartidosAutomaticos & "/" & FMain.Combinacion & " (3 x Grupo4) " & ".codigo", FMain.Combinacion)
End Select
End Select


End

última edición por v3ctor el Martes, 15 Abril 2014, 15:25; editado 2 veces
Objetivo: Re: Select Case Anidado No Funciona Bien
No estás usando combinación de dígitos, estás usando números. Si usas números 0123 es lo mismo que 123, los 0 a la izquierda no cuentan.
Utiliza cadenas y no tendrás problemas "0123" sí es distinto de "123".

Perfil MP  
Objetivo: Re: Select Case Anidado No Funciona Bien
shordi escribió: [Ver mensaje]
No estás usando combinación de dígitos, estás usando números. Si usas números 0123 es lo mismo que 123, los 0 a la izquierda no cuentan.
Utiliza cadenas y no tendrás problemas "0123" sí es distinto de "123".


Gracias shordi , efectivamente era eso.
Algo mas que aprendí fue que al cambiar case 0123 por case "0123" es que solo hay que poner la primera comilla antes del numero la otra comilla la agrega automáticamente

Objetivo: Re: Select Case Anidado No Funciona Bien
v3ctor:

Viendo tu código, te recomiento:
No hagas subrutinas de más de 10 lineas de largos, usa subrutinas. El código que has puesto se puede simplificar y asi es más fácil revisarlo y comprenderlo. Lo de "anidar" es mala idea a la larga...

Select Case FMain.EliminadosDEgrupo4
case 1
estudiocaso1()
case 2
estudiocaso2()
case 3
estudiocaso3()
end select


Y ya dentro de estudiocaso1(), pon el código correspondiente.



Saludos

última edición por jsbsan el Martes, 15 Abril 2014, 18:11; editado 1 vez
Objetivo: Re: Select Case Anidado No Funciona Bien
jsbsan si lo se, pero es que a veces ni siquiera se como voy hacer el código, lo que me esta pasando por lo general, es que descubro el código que necesito , y después de un tiempo lo optimizo. Lo intento, pero es que no es fácil para los que comenzamos. Igual con este programa que estoy haciendo estoy aprendiendo montañas jaja.

Objetivo: Re: Select Case Anidado No Funciona Bien
v3ctor:

Citar:
pero es que a veces ni siquiera se como voy hacer el código,...., es que descubro el código que necesito

Consejo: Te tienes que planificar mejor, esto es lo puedes hacer para corregir y mejorar tu manera de programar:
0) Piensa lo que quieres hacer.
1) Hazte diagramas de flujo.
2) Pasa los diagramas de flujo a pseudocódigo.
3) Una vez que has revisado el pseudocódigo, y ves que funciona bien, te pones a codificar en Gambas3 o el lenguaje que quieras usar.

Aunque te parezca más largo que lo el método que haces ahora, te ahorrarás muchísimo tiempo, y creas un código "optimizado" a la primera.

Citar:
Igual con este programa que estoy haciendo estoy aprendiendo montañas jaja.

Si aprendes un montón pero pierdes mucho tiempo, y cuando hagas programas más complicados, te costará mucho más, incluso puede que te pase que abandones el programa a medias ya que llegues a "callejones sin salida", por falta de planificación y estudio del problema.

Saludos

Objetivo: Re: Select Case Anidado No Funciona Bien
jsbsan escribió: [Ver mensaje]
v3ctor:

Citar:
pero es que a veces ni siquiera se como voy hacer el código,...., es que descubro el código que necesito

Consejo: Te tienes que planificar mejor, esto es lo puedes hacer para corregir y mejorar tu manera de programar:
0) Piensa lo que quieres hacer.
1) Hazte diagramas de flujo.
2) Pasa los diagramas de flujo a pseudocódigo.
3) Una vez que has revisado el pseudocódigo, y ves que funciona bien, te pones a codificar en Gambas3 o el lenguaje que quieras usar.

Aunque te parezca más largo que lo el método que haces ahora, te ahorrarás muchísimo tiempo, y creas un código "optimizado" a la primera.

Citar:
Igual con este programa que estoy haciendo estoy aprendiendo montañas jaja.

Si aprendes un montón pero pierdes mucho tiempo, y cuando hagas programas más complicados, te costará mucho más, incluso puede que te pase que abandones el programa a medias ya que llegues a "callejones sin salida", por falta de planificación y estudio del problema.

Saludos




Encontré una forma con menos código y que cubre todas las combinaciones.
cometí el error de querer usar esta linea:

case 1 or 2 (sintaxis incorrecta)

en vez de esta:

case 1 to 2 (sintaxis correcta)



Public Sub clasificacionG4()
' TODO: CLASIFICACION G4

FMain.Combinacion = btnTotal_J1.Text & btnTotal_J2.Text & btnTotal_J3.Text & btnTotal_J4.Text
DetectarMAX_MIN
Print "Variable combinacion es= ", FMain.Combinacion
Print "Variable eliminadoDEgrupo4 es= ", FMain.EliminadosDEgrupo4


If NumMayor = 3 And NumMenor = 0 Then 'El 3=primero, 2=segundo, 1=tercero y 0=eliminado
Select Case btnTotal_J1.Text
Case 3
btnClasificacionJ1.Text = "Primero"
Case 2
Select Case FMain.EliminadosDEgrupo4
Case 1 To 2
btnClasificacionJ1.Text = "Segundo"
Case 3
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
End Select
Case 1
Select Case FMain.EliminadosDEgrupo4
Case 1
btnClasificacionJ1.Text = "Tercero"
Case 2 To 3
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
End Select
Case 0
btnClasificacionJ1.Text = "Eliminado"
btnClasificacionJ1.Foreground = &HFF0000
End Select

Select Case btnTotal_J2.Text
Case 3
btnClasificacionJ2.Text = "Primero"
Case 2
Select Case FMain.EliminadosDEgrupo4
Case 1 To 2
btnClasificacionJ2.Text = "Segundo"
Case 3
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
End Select
Case 1
Select Case FMain.EliminadosDEgrupo4
Case 1
btnClasificacionJ2.Text = "Tercero"
Case 2 To 3
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
End Select
Case 0
btnClasificacionJ2.Text = "Eliminado"
btnClasificacionJ2.Foreground = &HFF0000
End Select

Select Case btnTotal_J3.Text
Case 3
btnClasificacionJ3.Text = "Primero"
Case 2
Select Case FMain.EliminadosDEgrupo4
Case 1 To 2
btnClasificacionJ3.Text = "Segundo"
Case 3
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
End Select
Case 1
Select Case FMain.EliminadosDEgrupo4
Case 1
btnClasificacionJ3.Text = "Tercero"
Case 2 To 3
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
End Select
Case 0
btnClasificacionJ3.Text = "Eliminado"
btnClasificacionJ3.Foreground = &HFF0000
End Select

Select Case btnTotal_J4.Text
Case 3
btnClasificacionJ4.Text = "Primero"
Case 2
Select Case FMain.EliminadosDEgrupo4
Case 1 To 2
btnClasificacionJ4.Text = "Segundo"
Case 3
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
End Select
Case 1
Select Case FMain.EliminadosDEgrupo4
Case 1
btnClasificacionJ4.Text = "Tercero"
Case 2 To 3
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
End Select
Case 0
btnClasificacionJ4.Text = "Eliminado"
btnClasificacionJ4.Foreground = &HFF0000
End Select

Endif


If NumMayor = 3 And NumMenor = 1 Then 'El 3=primero y 1=segundo
Select Case btnTotal_J1.Text
Case 3
btnClasificacionJ1.Text = "Primero"
Case 1
btnClasificacionJ1.Text = "Segundo(E)"
End Select

Select Case btnTotal_J2.Text
Case 3
btnClasificacionJ2.Text = "Primero"
Case 1
btnClasificacionJ2.Text = "Segundo(E)"
End Select

Select Case btnTotal_J3.Text
Case 3
btnClasificacionJ3.Text = "Primero"
Case 1
btnClasificacionJ3.Text = "Segundo(E)"
End Select

Select Case btnTotal_J4.Text
Case 3
btnClasificacionJ4.Text = "Primero"
Case 1
btnClasificacionJ4.Text = "Segundo(E)"
End Select

Endif

If NumMayor = 2 And NumMenor = 1 Then 'El 2=primero y 1=segundo
Select Case btnTotal_J1.Text
Case 2
btnClasificacionJ1.Text = "Primero(E)"
Case 1
btnClasificacionJ1.Text = "Segundo(E)"
End Select

Select Case btnTotal_J2.Text
Case 2
btnClasificacionJ2.Text = "Primero(E)"
Case 1
btnClasificacionJ2.Text = "Segundo(E)"
End Select

Select Case btnTotal_J3.Text
Case 2
btnClasificacionJ3.Text = "Primero(E)"
Case 1
btnClasificacionJ3.Text = "Segundo(E)"
End Select

Select Case btnTotal_J4.Text
Case 2
btnClasificacionJ4.Text = "Primero(E)"
Case 1
btnClasificacionJ4.Text = "Segundo(E)"
End Select

Endif

Select Case FMain.EliminadosDEgrupo4
Case 1 ' SI SE ELIMINA 1 JUGADOR EN EL GRUPO DE 4 ENTONCES...
File.Save(FMain.DirPartidosAutomaticos & "/" & FMain.Combinacion & " (1 x Grupo4) " & ".codigo", FMain.Combinacion)
Case 2 ' SI SE ELIMINAN 2 JUGADORES EN EL GRUPO DE 4 ENTONCES...
File.Save(FMain.DirPartidosAutomaticos & "/" & FMain.Combinacion & " (2 x Grupo4) " & ".codigo", FMain.Combinacion)
Case 3 ' SI SE ELIMINAN 3 JUGADORES EN EL GRUPO DE 4 ENTONCES...
File.Save(FMain.DirPartidosAutomaticos & "/" & FMain.Combinacion & " (3 x Grupo4) " & ".codigo", FMain.Combinacion)
End Select


End




Public Sub DetectarMAX_MIN()

Dim NumActual As Integer
Dim conteo As Integer
Dim conteo2 As Integer
Print "Combinacion es = ", FMain.Combinacion

Resultados = New Integer[]
Resultados.Add(Val(btnTotal_J1.Text))
Resultados.Add(Val(btnTotal_J2.Text))
Resultados.Add(Val(btnTotal_J3.Text))
Resultados.Add(Val(btnTotal_J4.Text))


For conteo = 0 To 3 Step 1
If Resultados[conteo] > NumMayor Then
NumActual = Resultados[conteo]
' Print "Numero analizado es= ", Resultados[conteo]
NumMayor = NumActual
' Print "Numero mayor es= ", NumMayor
Endif
' Print "conteo es= ", conteo
Next
Print "Numero mayor es= ", NumMayor
NumMenor = NumMayor

For conteo2 = 0 To 3 Step 1
If Resultados[conteo2] < NumMenor Then
NumActual = Resultados[conteo2]
' Print "Numero analizado es= ", Resultados[conteo2]
NumMenor = NumActual
' Print "Numero menor es= ", NumMenor
Endif
' Print "conteo2 es= ", conteo2
Next
Print "Numero menor es= ", NumMenor
Print "DetectarMAX_MIN()"

End


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.7907s (PHP: -1% SQL: 101%)
Consultas SQL: 47 - Debug off - GZIP Activado