elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Problema mostrar multiples variables en un solo Listbox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Problema mostrar multiples variables en un solo Listbox  (Leído 8,326 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Problema mostrar multiples variables en un solo Listbox
« Respuesta #10 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:



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:


Este objeto lo intentas asignar cómo una lista de enteros, pero no te lo permite:


A simple vista se aprecia que algo falla por que la sintaxis sale resaltada y al intentar compilar salen varios errores de compilación:


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:


Pero fíjate bien:


¿Que falta entonces aquí?


Los brackets!


Bien, al ponerlos, el error que se repetía desaparece, pero nos queda este error:


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:


A lista de array de enteros:


Este error desaparece finálmente:


Pero ahora aparece un nuevo error:


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:



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



Entonces, le añadimos esa función:


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:


Al intentar compilar, sale este error:


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:


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:


Listo, segundo problema solucionado.



El código que mostraste (bueno, una adaptación del código para poder correrlo):


El código con las correcciones aplicadas que he ido explicando:


El resultado de la ejecución:


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!


« Última modificación: 22 Abril 2015, 14:18 pm por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Problema mostrar multiples variables en un solo Listbox
« Respuesta #11 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   


En línea

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


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Problema mostrar multiples variables en un solo Listbox
« Respuesta #12 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





En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Problema mostrar multiples variables en un solo Listbox
« Respuesta #13 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


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
« Última modificación: 22 Abril 2015, 21:11 pm por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Problema mostrar multiples variables en un solo Listbox
« Respuesta #14 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
En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines