Pregunta Boba / como pasar registros desde un listbox a variables

Iniciado por luis456, 5 Abril 2016, 16:52 PM

0 Miembros y 2 Visitantes están viendo este tema.

luis456

Cita de: Lekim en  7 Abril 2016, 14:10 PM
Pero no sería pasarlo a integer, sino crear una colección o matriz interpretando cada elemento de una cadena de texto distinto de " " como integer. De ahí el uso que le das de Split



Al parecer tiene dos códigos, uno que le pasé yo y otro el tuyo Elektro. El cual estará como lo acabas de poner. Y quiere usar los dos en el mismo proyecto

Eso mismo  es lo que quiero ya que si no tendria que modificar todo lo que llevo en años  :silbar:
Que tu sabiduria no sea motivo de Humillacion para los demas

Lekim

Lo que no entiendo es por qué no usas este otro código que te pasó Elektro y que modifiqué para 6 números y para que no hubieran correlativos.

Todas las combinaciones:

Código (vbnet) [Seleccionar]

       Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))

       Dim pairsCol As IEnumerable(Of String) = Nothing

       pairsCol =
           From value1 As Integer In intCol
           From value2 As Integer In intCol
           From value3 As Integer In intCol
           From value4 As Integer In intCol
           From value5 As Integer In intCol
           Select String.Join(Environment.NewLine, (
                              From value6 As Integer In intCol
                                 Where (value1 <> value2) AndAlso
                                       (value1 <> value3) AndAlso
                                       (value1 <> value4) AndAlso
                                       (value1 <> value5) AndAlso
                                       (value1 <> value6) AndAlso
                                       (value2 <> value3) AndAlso
                                       (value2 <> value4) AndAlso
                                       (value2 <> value5) AndAlso
                                       (value2 <> value6) AndAlso
                                       (value3 <> value4) AndAlso
                                       (value3 <> value5) AndAlso
                                       (value3 <> value6) AndAlso
                                       (value4 <> value5) AndAlso
                                       (value4 <> value6) AndAlso
                                        (value5 <> value6) AndAlso
                                       (value2 > value1) AndAlso
                                       (value3 > value2) AndAlso
                                       (value4 > value3) AndAlso
                                       (value5 > value4) AndAlso
                                       (value6 > value5)
                                 Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
                                                      value1, value2, value3, value4, value5, value6)))


       For Each pairs As String In pairsCol
           For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
               ListBox1.Items.Add(line)
           Next line

       Next pairs





Combinaciones SIN todos los  números correlativos

Código (vbnet) [Seleccionar]
     Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))

       Dim pairsCol As IEnumerable(Of String) = Nothing

       pairsCol =
From value1 As Integer In intCol
From value2 As Integer In intCol
From value3 As Integer In intCol
From value4 As Integer In intCol
From value5 As Integer In intCol
Select String.Join(Environment.NewLine, (
             From value6 As Integer In intCol
                Where (value1 <> value2) AndAlso
                      (value1 <> value3) AndAlso
                      (value1 <> value4) AndAlso
                      (value1 <> value5) AndAlso
                      (value1 <> value6) AndAlso
                      (value2 <> value3) AndAlso
                      (value2 <> value4) AndAlso
                      (value2 <> value5) AndAlso
                      (value2 <> value6) AndAlso
                      (value3 <> value4) AndAlso
                      (value3 <> value5) AndAlso
                      (value3 <> value6) AndAlso
                      (value4 <> value5) AndAlso
                      (value4 <> value6) AndAlso
                       (value5 <> value6) AndAlso
                      (value2 > value1) AndAlso
                      (value3 > value2) AndAlso
                      (value4 > value3) AndAlso
                      (value5 > value4) AndAlso
                      (value6 > value5)
                Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
                                     value1, value2, value3, value4, value5, value6)))


       For Each pairs As String In pairsCol
           For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
               Dim Pattern As String = " "
               Dim Digito() As String
               Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
   
                       If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
                               CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
                                   CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
                                    CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
                                      CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
                   ListBox1.Items.Add(line)

               End If
           Next line

       Next pairs




Pero no me queda claro como pasar cada Item a Integer.

Este ejemplo, al final va obteniendo los números y crea una array cuyos items son los números de una combinación pero no se como se podría crear otro array con cada array ?¿?¿?¿

Código (vbnet) [Seleccionar]

       Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))

       Dim pairsCol As IEnumerable(Of String) = Nothing

       pairsCol =
From value1 As Integer In intCol
From value2 As Integer In intCol
From value3 As Integer In intCol
From value4 As Integer In intCol
From value5 As Integer In intCol
Select String.Join(Environment.NewLine, (
             From value6 As Integer In intCol
                Where (value1 <> value2) AndAlso
                      (value1 <> value3) AndAlso
                      (value1 <> value4) AndAlso
                      (value1 <> value5) AndAlso
                      (value1 <> value6) AndAlso
                      (value2 <> value3) AndAlso
                      (value2 <> value4) AndAlso
                      (value2 <> value5) AndAlso
                      (value2 <> value6) AndAlso
                      (value3 <> value4) AndAlso
                      (value3 <> value5) AndAlso
                      (value3 <> value6) AndAlso
                      (value4 <> value5) AndAlso
                      (value4 <> value6) AndAlso
                       (value5 <> value6) AndAlso
                      (value2 > value1) AndAlso
                      (value3 > value2) AndAlso
                      (value4 > value3) AndAlso
                      (value5 > value4) AndAlso
                      (value6 > value5)
                Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
                                     value1, value2, value3, value4, value5, value6)))


       For Each pairs As String In pairsCol
           For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
               Dim Pattern As String = " "
               Dim Digito() As String
               Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
   
                       If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
                               CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
                                   CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
                                    CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
                                      CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
                   ListBox1.Items.Add(line)

               End If
           Next line

       Next pairs

       '//Esto solo crea un array con la última combinación.
      '//En realidad lo hace con todas pero solo queda registrada la última
      '//¿Habría que hacer una colección de arrays?
       Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))
       Dim int32Col As IEnumerable(Of Integer) = Nothing

       For Each item As String In NuevaLista
           int32Col = From Elemento As String In item.Split(" "c) Select CInt(Elemento)
       Next

       'Los números de la última combinación
       MessageBox.Show(int32Col(0).ToString)
       MessageBox.Show(int32Col(1).ToString)
       MessageBox.Show(int32Col(2).ToString)
       MessageBox.Show(int32Col(3).ToString)
       MessageBox.Show(int32Col(4).ToString)
       MessageBox.Show(int32Col(5).ToString)




FALTABA UN:

(value5 <> value6) AndAlso

Ya lo he puesto  :¬¬

luis456

Cita de: Lekim en  7 Abril 2016, 15:42 PM
Lo que no entiendo es por qué no usas este otro código que te pasó Elektro y que modifiqué para 6 números y para que no hubieran correlativos.

Todas las combinaciones:

Código (vbnet) [Seleccionar]

       Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))

       Dim pairsCol As IEnumerable(Of String) = Nothing

       pairsCol =
           From value1 As Integer In intCol
           From value2 As Integer In intCol
           From value3 As Integer In intCol
           From value4 As Integer In intCol
           From value5 As Integer In intCol
           Select String.Join(Environment.NewLine, (
                              From value6 As Integer In intCol
                                 Where (value1 <> value2) AndAlso
                                       (value1 <> value3) AndAlso
                                       (value1 <> value4) AndAlso
                                       (value1 <> value5) AndAlso
                                       (value1 <> value6) AndAlso
                                       (value2 <> value3) AndAlso
                                       (value2 <> value4) AndAlso
                                       (value2 <> value5) AndAlso
                                       (value2 <> value6) AndAlso
                                       (value3 <> value4) AndAlso
                                       (value3 <> value5) AndAlso
                                       (value3 <> value6) AndAlso
                                       (value4 <> value5) AndAlso
                                       (value4 <> value6) AndAlso
                                        (value5 <> value6) AndAlso
                                       (value2 > value1) AndAlso
                                       (value3 > value2) AndAlso
                                       (value4 > value3) AndAlso
                                       (value5 > value4) AndAlso
                                       (value6 > value5)
                                 Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
                                                      value1, value2, value3, value4, value5, value6)))


       For Each pairs As String In pairsCol
           For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
               ListBox1.Items.Add(line)
           Next line

       Next pairs





Combinaciones SIN todos los  números correlativos

Código (vbnet) [Seleccionar]
     Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))

       Dim pairsCol As IEnumerable(Of String) = Nothing

       pairsCol =
From value1 As Integer In intCol
From value2 As Integer In intCol
From value3 As Integer In intCol
From value4 As Integer In intCol
From value5 As Integer In intCol
Select String.Join(Environment.NewLine, (
             From value6 As Integer In intCol
                Where (value1 <> value2) AndAlso
                      (value1 <> value3) AndAlso
                      (value1 <> value4) AndAlso
                      (value1 <> value5) AndAlso
                      (value1 <> value6) AndAlso
                      (value2 <> value3) AndAlso
                      (value2 <> value4) AndAlso
                      (value2 <> value5) AndAlso
                      (value2 <> value6) AndAlso
                      (value3 <> value4) AndAlso
                      (value3 <> value5) AndAlso
                      (value3 <> value6) AndAlso
                      (value4 <> value5) AndAlso
                      (value4 <> value6) AndAlso
                       (value5 <> value6) AndAlso
                      (value2 > value1) AndAlso
                      (value3 > value2) AndAlso
                      (value4 > value3) AndAlso
                      (value5 > value4) AndAlso
                      (value6 > value5)
                Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
                                     value1, value2, value3, value4, value5, value6)))


       For Each pairs As String In pairsCol
           For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
               Dim Pattern As String = " "
               Dim Digito() As String
               Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
   
                       If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
                               CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
                                   CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
                                    CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
                                      CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
                   ListBox1.Items.Add(line)

               End If
           Next line

       Next pairs




Pero no me queda claro como pasar cada Item a Integer.

Este ejemplo, al final va obteniendo los números y crea una array cuyos items son los números de una combinación pero no se como se podría crear otro array con cada array ?¿?¿?¿

Código (vbnet) [Seleccionar]

       Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))

       Dim pairsCol As IEnumerable(Of String) = Nothing

       pairsCol =
From value1 As Integer In intCol
From value2 As Integer In intCol
From value3 As Integer In intCol
From value4 As Integer In intCol
From value5 As Integer In intCol
Select String.Join(Environment.NewLine, (
             From value6 As Integer In intCol
                Where (value1 <> value2) AndAlso
                      (value1 <> value3) AndAlso
                      (value1 <> value4) AndAlso
                      (value1 <> value5) AndAlso
                      (value1 <> value6) AndAlso
                      (value2 <> value3) AndAlso
                      (value2 <> value4) AndAlso
                      (value2 <> value5) AndAlso
                      (value2 <> value6) AndAlso
                      (value3 <> value4) AndAlso
                      (value3 <> value5) AndAlso
                      (value3 <> value6) AndAlso
                      (value4 <> value5) AndAlso
                      (value4 <> value6) AndAlso
                       (value5 <> value6) AndAlso
                      (value2 > value1) AndAlso
                      (value3 > value2) AndAlso
                      (value4 > value3) AndAlso
                      (value5 > value4) AndAlso
                      (value6 > value5)
                Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
                                     value1, value2, value3, value4, value5, value6)))


       For Each pairs As String In pairsCol
           For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
               Dim Pattern As String = " "
               Dim Digito() As String
               Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
   
                       If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
                               CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
                                   CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
                                    CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
                                      CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
                   ListBox1.Items.Add(line)

               End If
           Next line

       Next pairs

       '//Esto solo crea un array con la última combinación.
      '//En realidad lo hace con todas pero solo queda registrada la última
      '//¿Habría que hacer una colección de arrays?
       Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))
       Dim int32Col As IEnumerable(Of Integer) = Nothing

       For Each item As String In NuevaLista
           int32Col = From Elemento As String In item.Split(" "c) Select CInt(Elemento)
       Next

       'Los números de la última combinación
       MessageBox.Show(int32Col(0).ToString)
       MessageBox.Show(int32Col(1).ToString)
       MessageBox.Show(int32Col(2).ToString)
       MessageBox.Show(int32Col(3).ToString)
       MessageBox.Show(int32Col(4).ToString)
       MessageBox.Show(int32Col(5).ToString)




FALTABA UN:

(value5 <> value6) AndAlso

Ya lo he puesto  :¬¬



Ya te agradezco la ayuda pero esto ya lo tengo cubierto, tengo mas filtros de lo que seguro usare jejej cuando tienes una idea pero no sabes como implementarlo es lo Jo,,,

Lo que pasa y como sabe  "El padre de Net "   jejej (elektro es broma ) casi todo mi programa esta hecho en linq: por eso cuando me salgo de la linea esa me pierdo  :silbar: :silbar:
pero como soy terco jejej no creo que no se pueda convertir los datos de un listbox en una simple variable


Luis




Que tu sabiduria no sea motivo de Humillacion para los demas

Eleкtro

#13
Cita de: luis456 en  7 Abril 2016, 16:55 PMno creo que no se pueda convertir los datos de un listbox en una simple variable

Asumo que por variable te estás refiriendo a un Array de enteros, ¿has leido mi última respuesta en este hilo?, ahí te expliqué como hacerlo, y de varias maneras...

Si no es eso lo que quieres hacer entonces yo no me estoy enterando (para variar...)

Saludos








luis456

Cita de: Eleкtro en  7 Abril 2016, 17:03 PM
Asumo que por variable te estás refiriendo a un Array de enteros, ¿has leido mi última respuesta en este hilo?, ahí te expliqué como hacerlo, y de varias maneras...

Si no es eso lo que quieres hacer entonces yo no me estoy enterando (para variar...)

Saludos

Que si hombre lo que paso es que solo vi lo de Lekim ,tenia un ojo en el visual y otro aca no lo vi bien jeje como siempre gracias Elektro

Clausurado este post jejje hasta la siguiente pregunta  :silbar: :silbar: :silbar:


Luis
Que tu sabiduria no sea motivo de Humillacion para los demas

Eleкtro

Cita de: luis456 en  7 Abril 2016, 18:07 PM
Que si hombre lo que paso es que solo vi lo de Lekim ,tenia un ojo en el visual y otro aca no lo vi bien jeje como siempre gracias Elektro

Clausurado este post jejje hasta la siguiente pregunta  :silbar: :silbar: :silbar:


Luis

Te lo pregunto más que nada por que yo no me voy a seguir conectando con la misma frecuencia al foro por motivos...indeseables, por si necesitas (mi) ayuda AHORA. ¿seguro que se ha resuelto tu duda?, de lo contrario dilo sin miedo, que no como xd

saludos








luis456

Cita de: Eleкtro en  7 Abril 2016, 18:54 PM
Te lo pregunto más que nada por que yo no me voy a seguir conectando con la misma frecuencia al foro por motivos...indeseables, por si necesitas (mi) ayuda AHORA. ¿seguro que se ha resuelto tu duda?, de lo contrario dilo sin miedo, que no como xd

saludos

No de verdad esta listo , solo te pido que me dejes un email en mi privado  :silbar: :silbar: :silbar:

Luis
Que tu sabiduria no sea motivo de Humillacion para los demas