Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: NIGHTBIRD en 21 Febrero 2018, 18:24 pm



Título: Excepcion con array de strings y lista, ayuda :(
Publicado por: NIGHTBIRD en 21 Febrero 2018, 18:24 pm
Buenos dias, me gustaria saber porque motivo me sale aqui una excepcion y como evitar que me salga dicha excepcion. Gracias.

(https://image.ibb.co/co2Ofx/Sin_t_wqeedtulo.jpg)

lista es de tipo:
List

y arrayformulayambientes es un array de strings:
Dim arrayformulayambientes As String()

Me estoy volviendo loco y no se que hacer para poder hacer lo que quiero sin que me salga esa excepcion :(

Lo que menos entiendo es que me salta ahi la excepcion pero no mas arriba cuando muestro en un MsgBox el valor de ese array en la misma posicion cero

Muchas gracias por leer.


Título: Re: Excepcion con array de strings y lista, ayuda :(
Publicado por: Eleкtro en 21 Febrero 2018, 20:11 pm
Primero que nada, las preguntas sorbe VB.NET van en el subforo de programación .NET, este foro se supone que es para preguntas de VB6. Aparte, si hay una próxima vez por favor intenta tener en consideración que para ayudarte nos sería mucho más util y versatil que pongas el código (y mencionar el tipo de exception y el mensaje de error como has hecho, claro está, y ya si nos pones el stacktrace pues mejor que mejor), ya que con una imagen no podemos testear ningún código. En este caso da igual por que se ve claramente el fallo, pero en general...



Lo que menos entiendo es que me salta ahi la excepcion pero no mas arriba cuando muestro en un MsgBox el valor de ese array en la misma posicion cero

Date cuenta, eso es el mayor indicativo de que el problema no es con el array, sino con la colección de tipo List.

Me estoy volviendo loco y no se que hacer para poder hacer lo que quiero sin que me salga esa excepcion :(

Intenta comprender el mensaje de error, te está indicando cual es el fallo: no existe un índice o posición "0" en tu lista. Dicho de otro modo: no has añadido ningún elemento a la lista, está vacía, el tamaño de la colección es cero.

No puedes esperar hacer algo como ' lista(1000) = "hello world" ' y que por arte de magia se generen 1.000 elementos vacíos en la lista y el elemento 1.001 con el valor "Hello World"... no tendría sentido, ¿verdad?. Una colección genérica de tipo List es practicamente un array de tamaño dinámico, pero eso no significa que puedas añadir elementos usando el indexer...

...debes usar el método List.Add() o List.AddRange() para añadir nuevos elementos a la colección, y luego entonces si quieres puedes usar el indexer de la colección para leer o modificar un elemento existente.

Ejemplo:

Código
  1. Dim lista As New List(Of String)
  2.  
  3. ' Añadir nuevo elemento:
  4. lista.Add(String.Empty)
  5.  
  6. ' Modificar elemento existente en el índice 0:
  7. lista(0) = "Hello World"

PD: para micro-optimizar el código quizás te convendría utilizar el tipo StringCollection en vez de List(Of String). depende de los métodos expuestos en el tipo List que realmente necesites usar.

Saludos