Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 5 Abril 2016, 16:52 pm



Título: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 5 Abril 2016, 16:52 pm
No se si me estoy volviendo senil o que ?  >:D pero creia que seria facil ,pero por mas que busco en el foro o en san google no doy con la respuesta  >:D poner desde una variable a un listbox si se hacerlo pero al contrario no

Como C,, paso los registros de un listbox a una variable integer ?

los registros van de esta forma o se muestran en listbox de esta manera y son en cantidad que van desde 10 al infinito de combinaciones de ese estilo

01 02 03
02 05 08
04 08 09
01 22 25

necesito meterlos en una variable integer para poder después trabajar con ellos


Luis


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: Lekim en 6 Abril 2016, 18:40 pm
Hola

Si cada Item del ListBox contiene algo como esto "04 08 09", se tratan de cadenas STRING y NO lo puedes meter en una variable Integer. Ya que una variable integer solo acepta números  de -2.147.483.648 a 2.147.483.647.

Y esto:

item 0 = "01 02 03"
item 1 = "02 05 08"
item 2 = "04 08 09"

no son números son cadenas String o de texto. Evidentemente el 1 es un número el 3 también, pero si lo pones "01 03" no es número. En cambio "0103" sí es un número, pero entonces "01" pierde su individualidad como número, ya que se trata del 103.






Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 6 Abril 2016, 19:25 pm
Hola

Si cada Item del ListBox contiene algo como esto "04 08 09", se tratan de cadenas STRING y NO lo puedes meter en una variable Integer. Ya que una variable integer solo acepta números  de -2.147.483.648 a 2.147.483.647.

Y esto:

item 0 = "01 02 03"
item 1 = "02 05 08"
item 2 = "04 08 09"

no son números son cadenas String o de texto. Evidentemente el 1 es un número el 3 también, pero si lo pones "01 03" no es número. En cambio "0103" sí es un número, pero entonces "01" pierde su individualidad como número, ya que se trata del 103.



Es de este codigo que se hace la función que la mete en el listbox  ¿ como se podría entonces en ves de ponerlos en el listbox que no importa sea string, por que se podría después convertir esa variable  en integer ?


Código
  1.  Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
  2.        ListBox1.Items.Add("01 02 03 04 05 06")
  3.        ListBox1.Items.Add("10 20 30 44 45 46")
  4.        ListBox1.Items.Add("12 22 34 45 56 65")
  5.        ListBox1.Items.Add("12 22 34 45 56 65")
  6.  
  7.  
  8.        Dim Pattern As String = " "
  9.        Dim Digito() As String
  10.  
  11.  
  12.        Dim ClearList As New List(Of String)(ListBox1.Items.OfType(Of String))
  13.        For Each Item As String In ClearList
  14.            Digito = System.Text.RegularExpressions.Regex.Split(Item, Pattern)
  15.            If CInt(Digito(1)) = CInt(Digito(0)) + 1 And
  16.                 CInt(Digito(2)) = CInt(Digito(1)) + 1 And
  17.                     CInt(Digito(3)) = CInt(Digito(2)) + 1 And
  18.                         CInt(Digito(5)) = CInt(Digito(4)) + 1 And
  19.                            CInt(Digito(5)) = CInt(Digito(4)) + 1 Then
  20.  
  21.                ListBox1.Items.Remove(Item) <<<<<-----cambiar o poner datos en variable
  22.  
  23.            End If
  24.        Next
  25.    End Sub

Claro que despues de meterlos en esa variable se podria hacer algo como esto


Código
  1. Dim MAl7 As IEnumerable(Of Integer) = Sp7
  2.        Dim Splits34 As List(Of Integer) = Sp7.Take(6).ToList

No se creo yo  ::)

Luis




Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: Lekim en 7 Abril 2016, 12:52 pm
Repito. No puedes meter cadenas de texto 'string' en integer.

De hecho, según ese código (que me suena un poco  :xD) ya  tienes el ejemplo de como meter el ListBox en una variable...

Código
  1. Dim ClearList As New List(Of String)(ListBox1.Items.OfType(Of String))

Lo que hace el código, es meter la lista pura del ListBox (que son cadenas string) en la variable ClearList   que es un List(of T) que es un array.  
Luego en el For Each repasa cada Item del ClearList y si cumple las condiciones borra los Items del ListBox que las cumpla.


Ahora, si quieres meterlo en una variable, llamada por ejemplo 'NuevaLista', tan solo lo  has de meter otra vez como antes:
Código:
Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))

Y ya lo tienes metido. Pero como String, claro. Porque algo como esto --> "01 02 03 04 05 06" es string e incluso Object, pero no integer

Código
  1.        ListBox1.Items.Add("01 02 03 04 05 06")
  2.        ListBox1.Items.Add("10 20 30 44 45 46")
  3.        ListBox1.Items.Add("12 22 34 45 56 65")
  4.        ListBox1.Items.Add("12 22 34 45 56 65")
  5.  
  6.  
  7.        Dim Pattern As String = " "
  8.        Dim Digito() As String
  9.  
  10.        '//Mete los Items del ListBox en ClearList
  11.        Dim ClearList As New List(Of String)(ListBox1.Items.OfType(Of String))
  12.        For Each Item As String In ClearList
  13.            Digito = System.Text.RegularExpressions.Regex.Split(Item, Pattern)
  14.            If CInt(Digito(1)) = CInt(Digito(0)) + 1 And
  15.                 CInt(Digito(2)) = CInt(Digito(1)) + 1 And
  16.                     CInt(Digito(3)) = CInt(Digito(2)) + 1 And
  17.                       CInt(Digito(4)) = CInt(Digito(3)) + 1 And
  18.                         CInt(Digito(5)) = CInt(Digito(4)) + 1  Then
  19.  
  20.                ListBox1.Items.Remove(Item) '<-----Borra un Item del ListBox
  21.            End If
  22.        Next
  23.        '//Mete la nueva lista en NewList
  24.        Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))
  25.        NuevaLista = NuevaLista.Distinct.ToList '//Quita Items repetidos
  26.        MessageBox.Show(NuevaLista(0).ToString)
  27.        MessageBox.Show(NuevaLista(1).ToString)
  28.  

Pero como te comenté no soy experto en NET, pero por lo que sé, yo lo veo así.

s2s



había un condición repetida dos veces, ya lo he quitado :
Código:
CInt(Digito(5)) = CInt(Digito(4)) + 1

Bueno, no es solo que estuviera repetido.. es que faltaba uno, el :
Código:
CInt(Digito(4)) = CInt(Digito(3)) + 1

ya que supongo que es para quitar combinaciones con todos los números correlativos


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 7 Abril 2016, 13:16 pm
Repito. No puedes meter cadenas de texto 'string' en integer.

De hecho, según ese código (que me suena un poco  :xD) ya  tienes el ejemplo de como meter el ListBox en una variable...

Código
  1. Dim ClearList As New List(Of String)(ListBox1.Items.OfType(Of String))

Lo que hace el código, es meter la lista pura del ListBox (que son cadenas string) en la variable ClearList   que es un List(of T) que es un array.  
Luego en el For Each repasa cada Item del ClearList y si cumple las condiciones borra los Items del ListBox que las cumpla.


Ahora, si quieres meterlo en una variable, llamada por ejemplo 'NuevaLista', tan solo lo  has de meter otra vez como antes:
Código:
Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))

Y ya lo tienes metido. Pero como String, claro. Porque algo como esto --> "01 02 03 04 05 06" es string e incluso Object, pero no integer

Código
  1.        ListBox1.Items.Add("01 02 03 04 05 06")
  2.        ListBox1.Items.Add("10 20 30 44 45 46")
  3.        ListBox1.Items.Add("12 22 34 45 56 65")
  4.        ListBox1.Items.Add("12 22 34 45 56 65")
  5.  
  6.  
  7.        Dim Pattern As String = " "
  8.        Dim Digito() As String
  9.  
  10.        '//Mete los Items del ListBox en ClearList
  11.        Dim ClearList As New List(Of String)(ListBox1.Items.OfType(Of String))
  12.        For Each Item As String In ClearList
  13.            Digito = System.Text.RegularExpressions.Regex.Split(Item, Pattern)
  14.            If CInt(Digito(1)) = CInt(Digito(0)) + 1 And
  15.                 CInt(Digito(2)) = CInt(Digito(1)) + 1 And
  16.                     CInt(Digito(3)) = CInt(Digito(2)) + 1 And
  17.                         CInt(Digito(5)) = CInt(Digito(4)) + 1  Then
  18.  
  19.                ListBox1.Items.Remove(Item) '<-----Borra un Item del ListBox
  20.            End If
  21.        Next
  22.        '//Mete la nueva lista en NewList
  23.        Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))
  24.        NuevaLista = NuevaLista.Distinct.ToList '//Quita Items repetidos
  25.        MessageBox.Show(NuevaLista(0).ToString)
  26.        MessageBox.Show(NuevaLista(1).ToString)
  27.  

Pero como te comenté no soy experto en NET, pero por lo que sé, yo lo veo así.

s2s



había un condición repetida dos veces, ya le he quitado :
Código:
CInt(Digito(5)) = CInt(Digito(4)) + 1


Ya  había resuelto  lo de meterlo en una variable  y me he vuelto loco tratando de pasarlos a integer,pero se que es como tu dices pero no puedo trabajar  mis otros códigos ya que son todos integer  >:D  no se puede pasar el codigo entero a integer ? ya que te son conocidos  :silbar: :silbar: :silbar:

lo he puesto asi pero da error al final   

La conversión de la cadena "10 20 30 44 45 46" en el tipo 'Integer' no es válida.


Código
  1.  ListBox1.Items.Add("01 02 03 04 05 06")
  2.        ListBox1.Items.Add("10 20 30 44 45 46")
  3.        ListBox1.Items.Add("12 22 34 45 56 65")
  4.        ListBox1.Items.Add("12 22 34 45 56 65")
  5.  
  6.  
  7.        Dim Pattern As String = " "
  8.        Dim Digito() As String
  9.  
  10.        '//Mete los Items del ListBox en ClearList
  11.        Dim ClearList As New List(Of String)(ListBox1.Items.OfType(Of String))
  12.        For Each Item As String In ClearList
  13.            Digito = System.Text.RegularExpressions.Regex.Split(Item, Pattern)
  14.            If CInt(Digito(1)) = CInt(Digito(0)) + 1 And
  15.                 CInt(Digito(2)) = CInt(Digito(1)) + 1 And
  16.                     CInt(Digito(3)) = CInt(Digito(2)) + 1 And
  17.                       CInt(Digito(4)) = CInt(Digito(3)) + 1 And
  18.                         CInt(Digito(5)) = CInt(Digito(4)) + 1 Then
  19.  
  20.                ListBox1.Items.Remove(Item) '<-----Borra un Item del ListBox
  21.            End If
  22.        Next
  23.        '//Mete la nueva lista en NewList
  24.        Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))
  25.        NuevaLista = NuevaLista.Distinct.ToList '//Quita Items repetidos
  26.        MessageBox.Show(NuevaLista(0).ToString)
  27.        MessageBox.Show(NuevaLista(1).ToString)
  28.  
  29.        Me.ListBox2.Items.AddRange((From value As Integer In NuevaLista Where value <> 0).Cast(Of Object).ToArray)   <<<aca el error
  30.  

saludos
Luis



Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: Lekim en 7 Abril 2016, 13:19 pm
Código:
no se puede pasar el codigo entero a integer ?

¿Es esta la pregunta?
"Entero a integer"  es lo mismo XD.

No fuera bromas. No se a que te refieres

Es como querer pasar

Código:
Dim txtCadena as String = "La patata boba"

a Integer.


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 7 Abril 2016, 13:22 pm
Código:
no se puede pasar el codigo entero a integer ?

¿Es esta la pregunta?
"Entero a integer"  es lo mismo XD.

No fuera bromas. No se a que te refieres

Jeje se me fue la olla  :rolleyes: :rolleyes: de string a integer jejje

luis


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: Lekim en 7 Abril 2016, 13:40 pm
No se, como no sea que quites los espacios a "AA BB CC DD..." y quede "AABBCCDD". Pero entonces no aceptaría Integer porque saldrían números muy grandes como 102030444546 y no se acepta como Integer, si no como Double.

Código
  1.      ListBox1.Items.Add("01 02 03 04 05 06")
  2.        ListBox1.Items.Add("10 20 30 44 45 46")
  3.        ListBox1.Items.Add("12 22 34 45 56 65")
  4.        ListBox1.Items.Add("12 22 34 45 56 65")
  5.  
  6.  
  7.        Dim Pattern As String = " "
  8.        Dim Digito() As String
  9.  
  10.        '//Mete los Items del ListBox en ClearList
  11.        Dim ClearList As New List(Of String)(ListBox1.Items.OfType(Of String))
  12.        For Each Item As String In ClearList
  13.            Digito = System.Text.RegularExpressions.Regex.Split(Item, Pattern)
  14.            If CInt(Digito(1)) = CInt(Digito(0)) + 1 And
  15.                 CInt(Digito(2)) = CInt(Digito(1)) + 1 And
  16.                     CInt(Digito(3)) = CInt(Digito(2)) + 1 And
  17.                        CInt(Digito(4)) = CInt(Digito(3)) + 1 And
  18.                           CInt(Digito(5)) = CInt(Digito(4)) + 1 Then
  19.  
  20.                ListBox1.Items.Remove(Item) '<-----Borra un Item del ListBox
  21.            End If
  22.        Next
  23.  
  24.  
  25.        ClearList.Clear() '//Borra  ClearList
  26.        ClearList.AddRange(ListBox1.Items.OfType(Of String)) '//Consigue la nueva lista del ListBox
  27.  
  28.        Dim NuevaLista As New List(Of Double)
  29.        For Each Item As String In ClearList
  30.            NuevaLista.Add(Item.Replace(" ", Nothing))
  31.        Next
  32.  
  33.        MessageBox.Show(NuevaLista(0).ToString)
  34.        MessageBox.Show(NuevaLista(1).ToString)
  35.  
  36.  



Rectifico mi comentario "no se puede meter cadenas string a integer", por si alguien me regaña...

A ver si el string es un número, entonce sí:

Código:
Dim Cadena as string = "12345"
Dim Numero as Integer = Cadena

también con el singo "-" delante indicando negatividad.
Código:
       
Dim Cadena As String = "-12345"
Dim Numero As Integer = Cadena

Pero si tiene carácteres distintos a un número tal como Espacio, coma, "x", "&" o letras por ejemplo pues entonces creo que no. A no ser que combiertas la cadena de texto a byte o algo así, no se, no he probado.



Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: Eleкtro en 7 Abril 2016, 14:09 pm
Lo que pretendes hacer no es adecuado (ya lo sabes), pero es muy sencillo, ¿será por maneras de hacerlo?... a estas alturas ya deberías saber hacer algo tan simple usando LINQ.

Teniendo esta cadena de texto:
Código
  1. Dim str As String = "01 02 03 04 05 06"

Puedes utilizar LINQ para no perder la costumbre:
Código
  1. Dim int32Col As IEnumerable(Of Integer) =
  2.    From item As String In str.Split(" "c)
  3.    Select CInt(item)

O utilizar un búcle for-each:
Código
  1. Dim int32List As New List(Of Integer)
  2. For Each item As String In str.Split(" "c)
  3.    int32List.Add(CInt(item))
  4. Next

...Lo que viene siendo practicamente lo mismo que esto otro:
Código
  1. Dim int32List As New List(Of Integer)
  2. Array.ForEach(Of String)(str.Split(" "c),
  3.                         Sub(ByVal item As String)
  4.                             int32List.Add(CInt(item))
  5.                         End Sub)

O puedes hacerlo de lo que considero la manera más óptima:
Código
  1. Dim int32Col As IEnumerable(Of Integer) =
  2.    Array.ConvertAll(Of String, Integer)(str.Split(" "c),
  3.                                         Function(ByVal item As String)
  4.                                             Return Integer.Parse(item)
  5.                                         End Function)



Para adaptarlo a los elementos de un Listbox, solo debes seguir el mismo procedimiento pero enfocado hacia una colección...

Primero creamos una referencia corta de la colección de items:
Código
  1. Dim lbItems As IEnumerable(Of String) =
  2.    ListBox1.Items.Cast(Of String)

Y entonces puedes llevar a cabo esto:
Código
  1. Dim int32Col As IEnumerable(Of IEnumerable(Of Integer)) =
  2.    From strItem As String In lbItems
  3.    Select (From value As String In strItem.Split(" "c)
  4.            Select CInt(value))

...o bien esto otro:
Código
  1. Dim lbItems As String() =
  2.    ListBox1.Items.Cast(Of String).ToArray
  3.  
  4. Dim int32Cols As New List(Of IEnumerable(Of Integer))
  5. Array.ForEach(lbItems,
  6.              Sub(item As String)
  7.                  int32Cols.Add(Array.ConvertAll(Of String, Integer)(item.Split(" "c),
  8.                                Function(ByVal value As String)
  9.                                    Return Cint(value)
  10.                                End Function))
  11.              End Sub)

Saludos


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: 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


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 7 Abril 2016, 14:26 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:


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: 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
  1.        Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))
  2.  
  3.        Dim pairsCol As IEnumerable(Of String) = Nothing
  4.  
  5.        pairsCol =
  6.            From value1 As Integer In intCol
  7.            From value2 As Integer In intCol
  8.            From value3 As Integer In intCol
  9.            From value4 As Integer In intCol
  10.            From value5 As Integer In intCol
  11.            Select String.Join(Environment.NewLine, (
  12.                               From value6 As Integer In intCol
  13.                                  Where (value1 <> value2) AndAlso
  14.                                        (value1 <> value3) AndAlso
  15.                                        (value1 <> value4) AndAlso
  16.                                        (value1 <> value5) AndAlso
  17.                                        (value1 <> value6) AndAlso
  18.                                        (value2 <> value3) AndAlso
  19.                                        (value2 <> value4) AndAlso
  20.                                        (value2 <> value5) AndAlso
  21.                                        (value2 <> value6) AndAlso
  22.                                        (value3 <> value4) AndAlso
  23.                                        (value3 <> value5) AndAlso
  24.                                        (value3 <> value6) AndAlso
  25.                                        (value4 <> value5) AndAlso
  26.                                        (value4 <> value6) AndAlso
  27.                                        (value5 <> value6) AndAlso
  28.                                        (value2 > value1) AndAlso
  29.                                        (value3 > value2) AndAlso
  30.                                        (value4 > value3) AndAlso
  31.                                        (value5 > value4) AndAlso
  32.                                        (value6 > value5)
  33.                                  Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
  34.                                                       value1, value2, value3, value4, value5, value6)))
  35.  
  36.  
  37.        For Each pairs As String In pairsCol
  38.            For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
  39.                ListBox1.Items.Add(line)
  40.            Next line
  41.  
  42.        Next pairs
  43.  
  44.  



Combinaciones SIN todos los  números correlativos

Código
  1.      Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))
  2.  
  3.        Dim pairsCol As IEnumerable(Of String) = Nothing
  4.  
  5.        pairsCol =
  6. From value1 As Integer In intCol
  7. From value2 As Integer In intCol
  8. From value3 As Integer In intCol
  9. From value4 As Integer In intCol
  10. From value5 As Integer In intCol
  11. Select String.Join(Environment.NewLine, (
  12.              From value6 As Integer In intCol
  13.                 Where (value1 <> value2) AndAlso
  14.                       (value1 <> value3) AndAlso
  15.                       (value1 <> value4) AndAlso
  16.                       (value1 <> value5) AndAlso
  17.                       (value1 <> value6) AndAlso
  18.                       (value2 <> value3) AndAlso
  19.                       (value2 <> value4) AndAlso
  20.                       (value2 <> value5) AndAlso
  21.                       (value2 <> value6) AndAlso
  22.                       (value3 <> value4) AndAlso
  23.                       (value3 <> value5) AndAlso
  24.                       (value3 <> value6) AndAlso
  25.                       (value4 <> value5) AndAlso
  26.                       (value4 <> value6) AndAlso
  27.                       (value5 <> value6) AndAlso
  28.                       (value2 > value1) AndAlso
  29.                       (value3 > value2) AndAlso
  30.                       (value4 > value3) AndAlso
  31.                       (value5 > value4) AndAlso
  32.                       (value6 > value5)
  33.                 Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
  34.                                      value1, value2, value3, value4, value5, value6)))
  35.  
  36.  
  37.        For Each pairs As String In pairsCol
  38.            For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
  39.                Dim Pattern As String = " "
  40.                Dim Digito() As String
  41.                Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
  42.  
  43.                        If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
  44.                                CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
  45.                                    CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
  46.                                     CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
  47.                                       CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
  48.                    ListBox1.Items.Add(line)
  49.  
  50.                End If
  51.            Next line
  52.  
  53.        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
  1.        Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))
  2.  
  3.        Dim pairsCol As IEnumerable(Of String) = Nothing
  4.  
  5.        pairsCol =
  6. From value1 As Integer In intCol
  7. From value2 As Integer In intCol
  8. From value3 As Integer In intCol
  9. From value4 As Integer In intCol
  10. From value5 As Integer In intCol
  11. Select String.Join(Environment.NewLine, (
  12.              From value6 As Integer In intCol
  13.                 Where (value1 <> value2) AndAlso
  14.                       (value1 <> value3) AndAlso
  15.                       (value1 <> value4) AndAlso
  16.                       (value1 <> value5) AndAlso
  17.                       (value1 <> value6) AndAlso
  18.                       (value2 <> value3) AndAlso
  19.                       (value2 <> value4) AndAlso
  20.                       (value2 <> value5) AndAlso
  21.                       (value2 <> value6) AndAlso
  22.                       (value3 <> value4) AndAlso
  23.                       (value3 <> value5) AndAlso
  24.                       (value3 <> value6) AndAlso
  25.                       (value4 <> value5) AndAlso
  26.                       (value4 <> value6) AndAlso
  27.                       (value5 <> value6) AndAlso
  28.                       (value2 > value1) AndAlso
  29.                       (value3 > value2) AndAlso
  30.                       (value4 > value3) AndAlso
  31.                       (value5 > value4) AndAlso
  32.                       (value6 > value5)
  33.                 Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
  34.                                      value1, value2, value3, value4, value5, value6)))
  35.  
  36.  
  37.        For Each pairs As String In pairsCol
  38.            For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
  39.                Dim Pattern As String = " "
  40.                Dim Digito() As String
  41.                Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
  42.  
  43.                        If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
  44.                                CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
  45.                                    CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
  46.                                     CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
  47.                                       CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
  48.                    ListBox1.Items.Add(line)
  49.  
  50.                End If
  51.            Next line
  52.  
  53.        Next pairs
  54.  
  55.        '//Esto solo crea un array con la última combinación.
  56.       '//En realidad lo hace con todas pero solo queda registrada la última
  57.       '//¿Habría que hacer una colección de arrays?
  58.        Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))
  59.        Dim int32Col As IEnumerable(Of Integer) = Nothing
  60.  
  61.        For Each item As String In NuevaLista
  62.            int32Col = From Elemento As String In item.Split(" "c) Select CInt(Elemento)
  63.        Next
  64.  
  65.        'Los números de la última combinación
  66.        MessageBox.Show(int32Col(0).ToString)
  67.        MessageBox.Show(int32Col(1).ToString)
  68.        MessageBox.Show(int32Col(2).ToString)
  69.        MessageBox.Show(int32Col(3).ToString)
  70.        MessageBox.Show(int32Col(4).ToString)
  71.        MessageBox.Show(int32Col(5).ToString)
  72.  


FALTABA UN:

Código:
(value5 <> value6) AndAlso

Ya lo he puesto  :¬¬


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 7 Abril 2016, 16:55 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
  1.        Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))
  2.  
  3.        Dim pairsCol As IEnumerable(Of String) = Nothing
  4.  
  5.        pairsCol =
  6.            From value1 As Integer In intCol
  7.            From value2 As Integer In intCol
  8.            From value3 As Integer In intCol
  9.            From value4 As Integer In intCol
  10.            From value5 As Integer In intCol
  11.            Select String.Join(Environment.NewLine, (
  12.                               From value6 As Integer In intCol
  13.                                  Where (value1 <> value2) AndAlso
  14.                                        (value1 <> value3) AndAlso
  15.                                        (value1 <> value4) AndAlso
  16.                                        (value1 <> value5) AndAlso
  17.                                        (value1 <> value6) AndAlso
  18.                                        (value2 <> value3) AndAlso
  19.                                        (value2 <> value4) AndAlso
  20.                                        (value2 <> value5) AndAlso
  21.                                        (value2 <> value6) AndAlso
  22.                                        (value3 <> value4) AndAlso
  23.                                        (value3 <> value5) AndAlso
  24.                                        (value3 <> value6) AndAlso
  25.                                        (value4 <> value5) AndAlso
  26.                                        (value4 <> value6) AndAlso
  27.                                        (value5 <> value6) AndAlso
  28.                                        (value2 > value1) AndAlso
  29.                                        (value3 > value2) AndAlso
  30.                                        (value4 > value3) AndAlso
  31.                                        (value5 > value4) AndAlso
  32.                                        (value6 > value5)
  33.                                  Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
  34.                                                       value1, value2, value3, value4, value5, value6)))
  35.  
  36.  
  37.        For Each pairs As String In pairsCol
  38.            For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
  39.                ListBox1.Items.Add(line)
  40.            Next line
  41.  
  42.        Next pairs
  43.  
  44.  



Combinaciones SIN todos los  números correlativos

Código
  1.      Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))
  2.  
  3.        Dim pairsCol As IEnumerable(Of String) = Nothing
  4.  
  5.        pairsCol =
  6. From value1 As Integer In intCol
  7. From value2 As Integer In intCol
  8. From value3 As Integer In intCol
  9. From value4 As Integer In intCol
  10. From value5 As Integer In intCol
  11. Select String.Join(Environment.NewLine, (
  12.              From value6 As Integer In intCol
  13.                 Where (value1 <> value2) AndAlso
  14.                       (value1 <> value3) AndAlso
  15.                       (value1 <> value4) AndAlso
  16.                       (value1 <> value5) AndAlso
  17.                       (value1 <> value6) AndAlso
  18.                       (value2 <> value3) AndAlso
  19.                       (value2 <> value4) AndAlso
  20.                       (value2 <> value5) AndAlso
  21.                       (value2 <> value6) AndAlso
  22.                       (value3 <> value4) AndAlso
  23.                       (value3 <> value5) AndAlso
  24.                       (value3 <> value6) AndAlso
  25.                       (value4 <> value5) AndAlso
  26.                       (value4 <> value6) AndAlso
  27.                       (value5 <> value6) AndAlso
  28.                       (value2 > value1) AndAlso
  29.                       (value3 > value2) AndAlso
  30.                       (value4 > value3) AndAlso
  31.                       (value5 > value4) AndAlso
  32.                       (value6 > value5)
  33.                 Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
  34.                                      value1, value2, value3, value4, value5, value6)))
  35.  
  36.  
  37.        For Each pairs As String In pairsCol
  38.            For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
  39.                Dim Pattern As String = " "
  40.                Dim Digito() As String
  41.                Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
  42.  
  43.                        If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
  44.                                CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
  45.                                    CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
  46.                                     CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
  47.                                       CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
  48.                    ListBox1.Items.Add(line)
  49.  
  50.                End If
  51.            Next line
  52.  
  53.        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
  1.        Dim intCol As New List(Of Integer)({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.OfType(Of Integer))
  2.  
  3.        Dim pairsCol As IEnumerable(Of String) = Nothing
  4.  
  5.        pairsCol =
  6. From value1 As Integer In intCol
  7. From value2 As Integer In intCol
  8. From value3 As Integer In intCol
  9. From value4 As Integer In intCol
  10. From value5 As Integer In intCol
  11. Select String.Join(Environment.NewLine, (
  12.              From value6 As Integer In intCol
  13.                 Where (value1 <> value2) AndAlso
  14.                       (value1 <> value3) AndAlso
  15.                       (value1 <> value4) AndAlso
  16.                       (value1 <> value5) AndAlso
  17.                       (value1 <> value6) AndAlso
  18.                       (value2 <> value3) AndAlso
  19.                       (value2 <> value4) AndAlso
  20.                       (value2 <> value5) AndAlso
  21.                       (value2 <> value6) AndAlso
  22.                       (value3 <> value4) AndAlso
  23.                       (value3 <> value5) AndAlso
  24.                       (value3 <> value6) AndAlso
  25.                       (value4 <> value5) AndAlso
  26.                       (value4 <> value6) AndAlso
  27.                       (value5 <> value6) AndAlso
  28.                       (value2 > value1) AndAlso
  29.                       (value3 > value2) AndAlso
  30.                       (value4 > value3) AndAlso
  31.                       (value5 > value4) AndAlso
  32.                       (value6 > value5)
  33.                 Select String.Format("{0:00} {1:00} {2:00} {3:00} {4:00} {5:00}",
  34.                                      value1, value2, value3, value4, value5, value6)))
  35.  
  36.  
  37.        For Each pairs As String In pairsCol
  38.            For Each line As String In pairs.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
  39.                Dim Pattern As String = " "
  40.                Dim Digito() As String
  41.                Digito = System.Text.RegularExpressions.Regex.Split(line, Pattern)
  42.  
  43.                        If CInt(Digito(1)) <> CInt(Digito(0)) + 1 Or
  44.                                CInt(Digito(2)) <> CInt(Digito(1)) + 1 Or
  45.                                    CInt(Digito(3)) <> CInt(Digito(2)) + 1 Or
  46.                                     CInt(Digito(4)) <> CInt(Digito(3)) + 1 Or
  47.                                       CInt(Digito(5)) <> CInt(Digito(4)) + 1 Then
  48.                    ListBox1.Items.Add(line)
  49.  
  50.                End If
  51.            Next line
  52.  
  53.        Next pairs
  54.  
  55.        '//Esto solo crea un array con la última combinación.
  56.       '//En realidad lo hace con todas pero solo queda registrada la última
  57.       '//¿Habría que hacer una colección de arrays?
  58.        Dim NuevaLista As New List(Of String)(ListBox1.Items.OfType(Of String))
  59.        Dim int32Col As IEnumerable(Of Integer) = Nothing
  60.  
  61.        For Each item As String In NuevaLista
  62.            int32Col = From Elemento As String In item.Split(" "c) Select CInt(Elemento)
  63.        Next
  64.  
  65.        'Los números de la última combinación
  66.        MessageBox.Show(int32Col(0).ToString)
  67.        MessageBox.Show(int32Col(1).ToString)
  68.        MessageBox.Show(int32Col(2).ToString)
  69.        MessageBox.Show(int32Col(3).ToString)
  70.        MessageBox.Show(int32Col(4).ToString)
  71.        MessageBox.Show(int32Col(5).ToString)
  72.  


FALTABA UN:

Código:
(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






Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: Eleкtro en 7 Abril 2016, 17:03 pm
no 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


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 7 Abril 2016, 18:07 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


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: Eleкtro en 7 Abril 2016, 18:54 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


Título: Re: Pregunta Boba / como pasar registros desde un listbox a variables
Publicado por: luis456 en 7 Abril 2016, 19:12 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