Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luis456

#221
Cita de: Eleкtro en  5 Marzo 2015, 13:03 PM
Ese error ya lo sufriste anteriormente por la mimsa causa y te expliqué el motivo.

Primero de nada, en el código que he citado, al método ListBox.Items.AddRange() le estás pasando la variable 'parts' que solo es un simple valor Integer, así que voy a hacer cómo que no he leido eso y vamos a suponer que al método le pasas la variable 'result', que es en realidad lo que le querrías intentar pasar, quedando así:
Código (vbnet) [Seleccionar]
ListBox1.Items.AddRange(result.Cast(Of Object).ToArray)

El método ListBox.Items.AddRange() espera que le pases como parámetro un array de objetos (una colección de strings por ejemplo, IEnumerable(Of String).Cast(Of Object).ToArray, o un array, New Object() {1,2,3}).

Pero 'result' es una colección que contiene sub-colecciones ( IEnumerable(Of IEnumerable(Of T)) ), no es un tipo de valor que vayas a poder visualizar en el listbox, por que tienes que pasarle un array que contenga los elementos que quieras mostrar (los valores Integer), no pasarle un array que contenga más arrays.

piensa, ¿qué debes hacer?, ¿debo volver a decírte lo que siempre te digo qué debes usar para resolver la mayoría de los problemas que tienes? (eso ha sido una pista), jeje.

Saludos!


Hola ya se LINQ: LINQ: LINQ: jejej  no se donde esta ese código que me hiciste que es parecido a esto, lo unico que me acuerdo es que tengo que crear una nueva lista (no se si me vuelvo a equivocar  jeje ) por cierto he estado estudiando lo de LINQ: y me tope con esto que se parece a lo que estuvimos haciendo la otra ves lo malo es que puedo ir creando uno por uno modificando la condiciones pero se me hace muyyy largo jejej esto es muy similar a lo que quiero hacer


Codigo
Código (vbnet) [Seleccionar]
' mostrar lo que quiera de dos en dos o tres en tres.
        Dim numbers() As Integer = {0, 1, 2, 3, 4, 5, 6, 10, 15, 20, 25, 30, 35, 45}

        '
        Dim evensQuery = From num In numbers
                         Where num Mod 2 = 1
                         Select num

        ListBox2.Items.AddRange(evensQuery.Cast(Of Object).ToArray)



muestra

1
3
5
15
25
35
45

Como veras salta de tres entres 1 3 5 etc pero esto solo lo hace una ves, la pregunta es como se podría hacer para que haga lo mismo  (bucle imagino ) arranque con lo mismo pero desde el siguiente numero en este caso el numero  2 4 6 15 25 35 45 y aci con todos

luis

#222
Cita de: Eleкtro en  4 Marzo 2015, 09:43 AM
Si no he entendido mal, tienes una colección de números cómo esta:
Código (vbnet) [Seleccionar]
Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)

Y quieres partirlo en colecciones de 4 elementos cada una:
Código (vbnet) [Seleccionar]
Dim parts As Integer = 4

Pues, cómo siempre te digo, usa LINQ:
Código (vbnet) [Seleccionar]

Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
   From index As Integer
    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
   Select collection.Skip(index * parts).Take(parts)


Saludos


Bueno  como soy un poco subnormal con esto, estaba modificando la función que entrega los números en variables apartes usando  para limitar con " take = 4) y después concatenando las variables resultantes ???? toda una chapuza jejej

Me he puesto con tu codigo pero siempre me pasa lo mismo al mostrar :(

Código (vbnet) [Seleccionar]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)

        Dim parts As Integer = 4


        Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
    From index As Integer
    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
    Select collection.Skip(index * parts).Take(parts)

        ListBox1.Items.AddRange(parts.Cast(Of Object).ToArray) <----error como siempre

    End Sub



Luis








#223
Bueno otro de mis inventos chungos

tengo una variable x2 integer que contiene x (es variable la cantidad) de numeros que contendria esta variable, ya saben el famoso 00 al 99 y quiero asignar a otras variables digamos variable  lx1 los primeros cuatro numeros de la variable x2 y despues los siguientes otros cuatro numeros a otra variable  lx2 y a si con todos los numeros de la variable x2 hasta acabar con todos,


Espero se entienda :)

Gracias
Luis



#224
Cita de: Eleкtro en 28 Febrero 2015, 18:35 PM
No se entiende bien lo que pretendes hacer, ¿te refieres a que cuando la lista tenga por ejemplo 15 elementos, puedas tomar los 4 o 6 primeros elementos de la colección?:

Código (vbnet) [Seleccionar]
        Dim resultss As IEnumerable(Of Integer) =
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 0
            }

        Dim selectedValues As IEnumerable(Of Integer) = resultss.Take(4)

        Me.ListBox1.Items.AddRange(selectedValues.Cast(Of Object).ToArray)


Saludos


Si me sirve tu codigo no lo habia mirado bien :)

gracias
Luis

#225
.NET (C#, VB.NET, ASP) / Re: Limitar resultados
28 Febrero 2015, 19:05 PM
No cuando la lista tenga lo que yo predefino, es que la muestra

por ejemplo yo quiero que esta muestre solo 10 numeros tomaria de la primera variable los numeros que tiene si faltan algunos los tomaria de la segunda y sumaria hasta llegar a los 10 si falta completaria con la tercera variable pero sin pasar de 10 números

gracias por responder

luis
#226
.NET (C#, VB.NET, ASP) / Limitar resultados
28 Febrero 2015, 14:59 PM
Por acá de nuevo con mis chapuzas :)

en el codigo de abajo yo concateno tres variables y las muestro en el listbox1 pero yo nesecito que el total de lo mostrado tenga una cantidad especifica de números, esto por ejemplo la variable " Result1 " aporta cuatro números , la variable  " Result2 " aporta 7 numeros y la "Result3 " aporta otros 4  sumando 15 números ,lo que quiero hacer es forzar a la variable Resultss a mostrar la cantidad de números que yo quiera, sean solo
cuatro seis o 15


Código (vbnet) [Seleccionar]
Dim Resultss As IEnumerable(Of Integer) =
           (
               From Value As Integer
               In (Result1.Concat(Result2).Concat(Result3)).Distinct)
               Where Value <= MAX
           )

       ListBox1.Items.AddRange(Resultss.Cast(Of Object).ToArray)
       ListBox1.Sorted = True



Luis
#227
Gracias :) ya entendi la dinamica del codigo con eso me basta :) ahora a chapucearlo jejej


luis

#228
Bien estoy probandolo y me funciono bien la primera ves pero haciendo pruebas con mas numeros me da error.

estoy probando con esta coleccion de numeros que estan dentro del txt

24 25 28 41 43 60
22 23 24 27 42 47
20 26 27 40 44 49
24 25 28 41 43 49
22 23 24 27 42 88
20 26 27 40 44 99
24 25 28 41 43 49
22 23 24 27 42 47
20 26 27 40 44 88
24 25 28 41 43 49
22 23 24 27 42 99
20 26 27 40 44 49
24 25 28 41 77 49
22 23 24 27 42 47
20 26 27 40 44 80

error que me da

" El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre del parámetro: index "

aca donde me lo da

Código (vbnet) [Seleccionar]
  .Second = From value As String In txtLines(i + 1).Split({" "c}, StringSplitOptions.RemoveEmptyEntries)
                          Select Integer.Parse(value) 


y otra cosa como me lo muestra en un combo debo de ir pasando de uno en uno y cuando le ponga tresmil numeros sera toda una faena jejej no se puede grabar en un txt ?

luis








#229
Era eso  :( mil gracias lo estoy probando :)


luis
#230
Gracias mil de nuevo elektro no que haria sin ti :) lo estoy probando y me da este error


Error1   No se puede encontrar el evento 'Shown'.



luis