Foros del Web » Programación para mayores de 30 ;) » .NET »

array de fechas

Estas en el tema de array de fechas en el foro de .NET en Foros del Web. Tengo el siguiente codigo para crear un array de fechas que obtengo de una consulta,inicio y final serian dos fechas de referencia inicio = dsevento.Tables("eventos").Rows(0).Item("fec_ini_e ...
  #1 (permalink)  
Antiguo 18/11/2008, 05:20
 
Fecha de Ingreso: noviembre-2008
Mensajes: 41
Antigüedad: 15 años, 6 meses
Puntos: 0
array de fechas

Tengo el siguiente codigo para crear un array de fechas que obtengo de una consulta,inicio y final serian dos fechas de referencia

inicio = dsevento.Tables("eventos").Rows(0).Item("fec_ini_e vento")
final = dsevento.Tables("eventos").Rows(0).Item("fec_fin_e vento")

Dim i, a, j As Integer
Dim array() As Date
a=0
Do While inicio <= final

array(a) = inicio
a = a + 1
Loop

Pero me da el siguiente error y no se porque

System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto
  #2 (permalink)  
Antiguo 18/11/2008, 05:48
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: array de fechas

El problema reside en que no has creado una instancia del array. Ya que no conoces de antemano cuál va a ser el tamaño del array, deberías crear primero una instancia del array y, en cada pasada del bucle, ir redimensionándolo.

Paso 1: Crear la instancia

Para crear la instancia, puedes optar por dos métodos:

a) dim array(1) as Date -> Con lo cual has creado ya la instancia con un elemento

b)

dim array() as Date
dim tamanoInicial as Integer
array = System.Array.CreateInstance(Type.GetType("System.D ateTime"), 1)

Paso 2: Redimensionar

Para redimensionar, tienes que usar la función estática Resize de la clase Array. Así, si arrArray es el nombre de tu instancia (te recomendaría no utilizar nunca nombres de variables que coincidan con nombres de tipos, pues te vas a encontrar con muchos problemas), para redimensionar tu array a un tamaño 3, por ejemplo, lo harías con la siguiente llamada:

Array.Resize(arrArray,3)

Otra alternativa -en mi opinión, mejor cuando en ningún momento sabes el número de elementos que tienes que almacenar- es utilizar un objeto del tipo ArrayList en lugar de un array.

Espero haberte servido de ayuda.

Jesús






a+=1
Loop

1) Si sabes de an
  #3 (permalink)  
Antiguo 18/11/2008, 05:50
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: array de fechas

Perdona, se me han colado algunos caracteres en la respuesta. Te la pongo totalmente clara:

El problema reside en que no has creado una instancia del array. Ya que no conoces de antemano cuál va a ser el tamaño del array, deberías crear primero una instancia del array y, en cada pasada del bucle, ir redimensionándolo.

Paso 1: Crear la instancia

Para crear la instancia, puedes optar por dos métodos:

a) dim array(1) as Date -> Con lo cual has creado ya la instancia con un elemento

b)

dim array() as Date
array = System.Array.CreateInstance(Type.GetType("System.D ateTime"), 1)

Paso 2: Redimensionar

Para redimensionar, tienes que usar la función estática Resize de la clase Array. Así, si arrArray es el nombre de tu instancia (te recomendaría no utilizar nunca nombres de variables que coincidan con nombres de tipos, pues te vas a encontrar con muchos problemas), para redimensionar tu array a un tamaño 3, por ejemplo, lo harías con la siguiente llamada:

Array.Resize(arrArray,3)

Otra alternativa -en mi opinión, mejor cuando en ningún momento sabes el número de elementos que tienes que almacenar- es utilizar un objeto del tipo ArrayList en lugar de un array.

Espero haberte servido de ayuda.

Jesús
  #4 (permalink)  
Antiguo 18/11/2008, 06:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 41
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: array de fechas

ok,gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:00.