Visual Basic - redimensionar un array

Life is soft - evento anual de software empresarial
 
Vista:

redimensionar un array

Publicado por chus (21 intervenciones) el 30/10/2003 10:43:13
Tengo declarado un array sin dimensionar.
La primera vez le doy la dimension
Redim ficherosconerror (1,2)
y la segunda vez la redimensiono guardando los datos
Redim Preserve ficherosconerror(ubound(ficherosconerror)+1,2)

Esto último no debe estar bien porque me da el error '9' en tiempo de ejecución que dice: que el subindice esta fuera del intervalo.

¿como debo ponerlo?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:redimensionar un array

Publicado por Ángel (42 intervenciones) el 30/10/2003 13:16:48
El problema que tienes es que no puedes redimensionar una matriz con valores. Esto es lo que pone la ayuda de ReDim de VB:

"Lainstrucción ReDim se utiliza para asignar o cambiar el tamaño de una matriz dinámica que ya se ha declarado formalmente mediante las instrucciones Private, Public o Dim con paréntesis vacíos (sin subíndices de dimensiones)."

La solución creo que pasa por tener dos arrays de una dimensión y no de dos.

Espero que te valga.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:redimensionar un array

Publicado por Juan (284 intervenciones) el 30/10/2003 19:22:46
Lo que sucede es que si utilizas la palabra preserve para arrays con más de una dimension, sólo se puede cambiar el tamaño de la última.

Para solucionarlo simplemente invierte el orden en las dimensiones:

ReDim ficherosconerror(2, 1)
ReDim Preserve ficherosconerror(2, UBound(ficherosconerror, 2) + 1)

Nota: Por si te resulta extraño, el 2º parámetro de la función UBound es para indicar que queremos el límite de la segunda dimension del array.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar