Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 19 Abril 2015, 18:28 pm



Título: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 19 Abril 2015, 18:28 pm
Bueno aca de nuevo con un problema similar al anterior post   :silbar:

Queria mostrar en un solo listbox 60 listbox  y se resolvio :) ahora pense que seria mejor mostrar  las variables que se muestra en esos testbosex  y podria hacer el codigo mas limpio jejej

tengo esto, pero dos cosas si son 60 variables como es que se colocan jejej ya que logro poner una y la muestra pero repiten los resultados :( cuando se supone que deberia :)

de esta manera si hay una sola variable
01 02 03 04 05 06 07 08 09 10

y me muestra : ????

01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10


Código
  1. Dim Lnumbers As List(Of Integer) = rsalmlals2
  2.  
  3.        For Each Lnumber As Integer In Lnumbers
  4.  
  5.            ListBox1.Items.Add(String.Join(" "c, Lnumbers.Cast(Of Integer)))
  6.  
  7.        Next Lnumber


Saludos
Luis


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 20 Abril 2015, 19:02 pm
no me sale ya estoy por creer que no se puede ;(


otra de las muchas formas que he tratado y nada :) no se unir las variables con la primera si pero ni punto ni comas ni ostias,,,,,,,,,

Código
  1. Dim Lnumbers As IEnumerable(Of Integer) = rsalmRe1 <solo me acepta una variable
  2.  
  3.        For Each Lnumber As Integer In Lnumbers
  4.  
  5.            ListBox1.Items.Add(String.Join("-"c, Lnumbers.Cast(Of Integer)))
  6.  
  7.        Next Lnumber


aaa en linq: no encuentro nada  :silbar:

Luis




Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: Eleкtro en 21 Abril 2015, 16:59 pm
repiten los resultados

01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10

Claro que se repiten, intenta entender el código que estás manipulando.

En el bloque del FOR, por cada valor que se encuentre en Lnumbers haces esto ListBox1.Items.Add(String.Join(" "c, Lnumbers.Cast(Of Integer))), estás agregando la misma colección "X" cantidad de veces donde "X" equivale a la cantidad de valores de Lnumbers.

No entiendo lo que quieres hacer.

Saludos


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 21 Abril 2015, 20:10 pm
Bueno quiero hacer algo como esto: Pero con las variables que muestro en los testboxes


Código
  1. Dim lbs As ListBox() = {ListBox2, ListBox3, ... ListBox60}   <----cambiar x variables que se muestran  en cada testbox
  2.  
  3. For Each lb As ListBox In lbs
  4.    ListBox1.Items.Add(String.Join(" "c, lb.Items.Cast(Of String)))
  5. Next lb


 


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: Eleкtro en 21 Abril 2015, 22:49 pm
quiero hacer algo como esto: Pero con las variables que muestro en los testboxes

Código
  1. Dim lbs As ListBox() = {ListBox2, ListBox3, ... ListBox60}   <----cambiar x variables que se muestran  en cada testbox

Intenta reformular tu duda, por que de verdad que no se entiende nada.

Esto te podría ayudar:
  • 10 pasos para plantear una duda informática (http://foro.elhacker.net/index.php/topic,159345.msg751417.html)
  • FAQ : Como hacer preguntas "inteligentes" (http://foro.elhacker.net/index.php/topic,7122.0.html)



Código
  1. Dim Lnumbers As List(Of Integer) = rsalmlals2
  2.  
  3. ListBox1.Items.Add(String.Join(" "c, Lnumbers))
   
¿?

saludos


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 22 Abril 2015, 07:23 am
Bueno de nuevo gracias por tu paciencia pero no sale lo  que busco y eso que me lei los enlaces que me enviaste y todavia no aprendo a explicarme, te pongo lo que hago pero por supuesto no me sale

primer error el tipico " Un valor de tipo 'Integer' no se puede convertir en 'System.Windows.Forms.ListBox' "

segundo problema no se unir las variables :(

Código
  1. im Lnumbers As List(Of Integer) = rsalmlals2, rsalmlals3, rsalmlals4
  2.  
  3.        For Each lb As ListBox In Lnumbers
  4.  
  5.            ListBox1.Items.Add(String.Join(" "c, Lnumbers))
  6.  
  7.        Next lb

Luis


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: Eleкtro en 22 Abril 2015, 12:16 pm
Hay muchos fallos obvios en el último código que has mostrado, pero antes de proseguir a explicarte, especifica claramente que es 'rsalmlals2' (y el resto), muestra el tipo de declaración.

Por ejemplo, ¿lo tienes declarado cómo un IEnumerable(Of IEnumerable(Of Integer))?:

(http://i.imgur.com/6wk8s8d.jpg)

Saludos


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 22 Abril 2015, 12:33 pm
te enseño de donde lo saco , "almlals2"  lo que nesecito mostrar y son 30 variables de ese tipo y los quiero mostrar en un solo listbox


Código
  1. Dim almA1 As IEnumerable(Of Integer) = almRe1
  2.        Dim almlals2 As List(Of Integer) = almRe1.ToList
  3.        almlals2.Sort()
  4.        Me.ListBox70.Items.AddRange((From value As Integer In almlals2 Where value <> 0).Cast(Of Object).ToArray)  


luis


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: Eleкtro en 22 Abril 2015, 12:48 pm
de acuerdo, dáme unos minutos para escribir... y ve preparándote para el "regaño", jeje...


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 22 Abril 2015, 13:21 pm
de acuerdo, dáme unos minutos para escribir... y ve preparándote para el "regaño", jeje...

lo sabia ,,lo sabia  :(

 


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: Eleкtro en 22 Abril 2015, 13:27 pm
En serio Luis, llevas... no se, 80 o 100 preguntas sobre los mismos temas, deberías tenerlos más que aprendidos.

Me gustaría que aprendieses a resolver fallos básicos cómo este, que te suceden por que vas toqueteando cosas ...cambiando puntos, comas, etc, a ver si alguno de esos cambios cuela y te funciona, pero así no se programa Luis, así no.

Lo primero de todo que quiero que hagas es que vayas a las opciones de VisualStudio y actives estas opciones tal y cómo yo las tengo:

(http://i.imgur.com/DtYR4Ka.jpg)

Eso te servirá para cojer buenos hábitos de programación.

A ver si aprendes a depurar con breakpoints o al menos a solucionar estos problemas básicos por ti mismo.

Mi habilidad para explicar no es que sea muy buena y tampoco voy a entrar en detalles avanzados de depuración, solo intentaré explicarte cómo solucionar los problemas del código que mostraste de un modo para que lo entiendas, si acabas teniendo dudas, pregunta.



Primer problema:

Tienes no se cuantas colecciones o arrays cómo estos:
(http://i.imgur.com/SalqO1J.jpg)

Este objeto lo intentas asignar cómo una lista de enteros, pero no te lo permite:
(http://i.imgur.com/pftG6Kv.jpg)

A simple vista se aprecia que algo falla por que la sintaxis sale resaltada y al intentar compilar salen varios errores de compilación:
(http://i.imgur.com/zZ4qJJc.jpg)

El primer error ya lo veremos luego,
si te fijas, el último error está repetido (y solo te saldrá ese error si activaste las opciones que te dije), eso nos indica que las variables col1, col2 y col3 se están tratando por separado, a la conclusión que deberías llegar con eso es que no estás asignando o "agrupando" correctamente las variables.

Fíjate aquí cómo lo asignas:
(http://i.imgur.com/7v8BzGA.jpg)

Pero fíjate bien:
(http://i.imgur.com/NFGieHj.jpg)

¿Que falta entonces aquí?
(http://i.imgur.com/LVxviQT.jpg)

Los brackets!
(http://i.imgur.com/jILPomg.jpg)

Bien, al ponerlos, el error que se repetía desaparece, pero nos queda este error:
(http://i.imgur.com/JwpxSCq.jpg)

Un array de un array de enteros no se puede convertir a una lista de enteros, hmmm... ¿por qué pasa esto?.

Por que aunque hayamos solventado el error que se repetía, los brackets {} indican la asignación de un array, y además, dentro de ese array he colocado 3 arrays más (col1, col2 y col3),
así que tenemos un array de arrays de enteros intentando asignarlo a una lista de enteros, ¿qué harias?, corregir la declaración:

De lista de enteros:
(http://i.imgur.com/pk3EiYu.jpg)

A lista de array de enteros:
(http://i.imgur.com/QRrfaaq.jpg)

Este error desaparece finálmente:
(http://i.imgur.com/JwpxSCq.jpg)

Pero ahora aparece un nuevo error:
(http://i.imgur.com/IOw54KF.jpg)

No se puede convertir un array de array de enteros a una lista de array de enteros, claro, son dos tipos parcialmente distintos... entonces debes buscar la forma de convertir una colección (enumerable) a una lista, que también lo sabes hacer de sobra, con la función ToList:

(http://i.imgur.com/7IPLgqb.jpg)

Y si no recordases cómo se hace, solo tienes que buscar en Google:
http://lmgtfy.com/?q=.net+ienumerable+to+list

O investigar un poco en la documentación oficial de MSDN para encontrar la manera:
https://msdn.microsoft.com/en-us/library/vstudio/system.linq.enumerable_methods%28v=vs.100%29.aspx

(http://i.imgur.com/6Gd6aCV.jpg)

Entonces, le añadimos esa función:
(http://i.imgur.com/5OKqbSG.jpg)

Listo, el error ha desaparecido, primer problema solucionado.

En resumen, solo habia que corregir la declaración del objeto "Lnumbers" y convertir el array al type "List", facil, ¿no?.



Segundo problema:

Creo que en el fondo sabes de sobra cómo solucionar esto, pero de todas formas lo analizaré:

Tenemos este código:
(http://i.imgur.com/BW144Cu.jpg)

Al intentar compilar, sale este error:
(http://i.imgur.com/P9Ri7wl.jpg)

No se puede convertir un array de enteros al tipo Listbox, el error se explica por si mismo.

Solo necesitas fijarte en cómo has declarado el objeto Lnumbers:
(http://i.imgur.com/PD7Scom.jpg)

Ahí no hay ningún ListBox, es una lista de array de enteros.

Si pretendes iterar una lista de array de enteros entonces deberás declarar la variable de iteración del For como tal, ¿no?, cómo un array de enteros:
(http://i.imgur.com/6yuINOS.jpg)

Listo, segundo problema solucionado.



El código que mostraste (bueno, una adaptación del código para poder correrlo):
(http://i.imgur.com/Y0jUxdq.jpg)

El código con las correcciones aplicadas que he ido explicando:
(http://i.imgur.com/V3S7ajM.jpg)

El resultado de la ejecución:
(http://i.imgur.com/MD4DfJs.png)

Y el código para hacerlo con IEnumerables:
Código
  1.    Dim col1 As IEnumerable(Of Integer) = {1, 2, 3}
  2.    Dim col2 As IEnumerable(Of Integer) = {4, 5, 6}
  3.    Dim col3 As IEnumerable(Of Integer) = {7, 8, 9}
  4.  
  5.    Private Sub Test()
  6.  
  7.        Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, col2, col3}.ToList
  8.  
  9.        For Each col As IEnumerable(Of Integer) In Lnumbers
  10.  
  11.            ListBox1.Items.Add(String.Join(" "c, col))
  12.  
  13.        Next col
  14.  
  15.    End Sub

Espero que de verdad esto haya servido para que puedas mejorar en algún aspecto... ya se que tampoco he explicado mucho y han sido cosas muy básicas, pero creo que de algo servirá.

Saludos!


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 22 Abril 2015, 13:46 pm
 ;-) ;-) ;-) ;-) ;-) a si si se aprende , bien explicado profe , sabes que pasa a veces, que es como cuando le enseño mecanica a mi sobrino (mi profesion real ) es que asumo que como yo lo se , el deberia saberlo  o que es facil jejej y por eso  te agradezco tu esfuerzo en enseñarme bueno a a tratar ya que a burro viejo es dificil enseñar jejej


Luis   


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 22 Abril 2015, 17:11 pm
Perfecto funciona bien y si me disculpas te hare un par de preguntas sobre esto  :silbar:

hay alguna limitacion sobre la cantidad de variables que se puedan usar ?  ejemplo si quiero poner dos mil variables jejej ( pura curiosidad)

Código
  1. Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, tgghLali9, ali4, ali5, ali6, ali7,....hasta dosmil o mas }.ToList  


y la otra que estoy buscando " estetica" 

como hago para que en ves de mostrame

1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

pueda mostrar con ceros asi

01 02 03 04 05 06 07 08 09

11 12 13 14 15 16 17 18 19

estuve investigando con " format " pero no me entero ya que probando lo unico que hago es agregar ceros a todos los numeros incluidos los pares jejej

Luis







Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: Eleкtro en 22 Abril 2015, 18:39 pm
hay alguna limitacion sobre la cantidad de variables que se puedan usar ?  ejemplo si quiero poner dos mil variables jejej ( pura curiosidad)

Código
  1. Dim Lnumbers As List(Of IEnumerable(Of Integer)) = {col1, tgghLali9, ali4, ali5, ali6, ali7,....hasta dosmil o mas }.ToList  

Depende.


1. Límite de elementos.

Desarrollando la aplicación bajo 32 Bits y para un array uni-dimensional, el límite teórico de cantidad de elementos es el equivalente a Integer.MaxValue, es decir, 2.147,483,647 de elementos, pero dependiendo del tipo de elemento que asignes puede ser menos.

Desarrollando la aplicación bajo 64 Bits y para un array uni-dimensional, por defecto el límite sigue siendo el mismo.

Desarrollando la aplicación bajo 64 Bits, para un array multi-dimensional (no uni-dimensional), y bajo .Net Framework 4.5 o superior, se puede superar el límite activando manuálmente la característica gcAllowVeryLargeObjects en la config del proyecto, el límite equivaldría a UInteger.MaxValue, es decir, 4,294,967,295 de elementos (teóricamente).

<gcAllowVeryLargeObjects> Element - MSDN (https://msdn.microsoft.com/ro-ro/library/hh285054%28v=vs.110%29.aspx)


2. Límite de memoria.

Existe un límite de tamaño de asignación total que puede ocupar el objeto en la memoria, son 2 GB bajo una aplicación de 32 Bits, bajo una aplicación de 64 Bits en principio sigue siendo el mismo límite, pero si usas .Net Framework 4.5 o superior se puede sobrepasar dicho límite.



como hago para que en ves de mostrame
1 2 3 4 5 6 7 8 9

pueda mostrar con ceros asi
01 02 03 04 05 06 07 08 09

Pregunta incorrecta.

Intenta hacerlo por ti mismo, publica tus progresos con el código, y especifica donde estás atascado.

Además, lo de añadir ceros ya te lo resolví hace mucho tiempo ...también podrías buscarlo.

Con LINQ (From ... In ... Select) le das el formato deseado a la secuencia.

Saludos


Título: Re: Problema mostrar multiples variables en un solo Listbox
Publicado por: luis456 en 23 Abril 2015, 07:57 am
Solucionado lo de mostrar con ceros  ;-) ;-) ;-) ;-) ;-)


Gracias elektro mis avances son pequeños, pero caminando es que se  hace el camino :)


Código
  1. For Each col As IEnumerable(Of Integer) In Lnumbers
  2.  
  3.            ListBox23.Items.Add(String.Join(", ", From value As Integer In col
  4.                                                                      Select If(value.ToString.Length = 1I,
  5.                                                                                value.ToString.Insert(0I, "0"c),
  6.                                                                                value.ToString)))
  7.        Next col

Luis