¿Se puede trabajar en Visual basic con arreglos dinámicos?

Hola sabes, quiero saber si en Visual Basic se puede trabajar con arreglos dinámico, me explico, debo ocupar un arreglo que me guarde valores, pero en tiempo de ejecución se debe definir su largo, puesto que este largo se obtendrá de una consulta a la base de datos y la primera ves el largo del arreglo puede ser 4 la segunda 5 ...
Etc si supiera el largo más largo lo defino de ese largo pero no es deducible
si sabes como solucionar este problema de lo agradecería un montón
Soledad
4

4 respuestas

1
Respuesta de
Soledad
En este ejemplo se utiliza la instrucción ReDim para asignar y reasignar espacio de almacenamiento para variables de matrices dinámicas. Se supone que Option Base es 1.
Dim MiMatriz() As Integer ' Declara una matriz dinámica.
Redim MiMatriz(5) ' Asigna 5 elementos.
For I = 1 To 5 ' Bucle 5 veces.
MiMatriz(I) = I ' Inicializa la matriz.
Next I
La instrucción siguiente cambia el tamaño de la matriz y borra los elementos.
Redim MiMatriz(10) ' Cambia el tamaño a 10 elementos.
For I = 1 To 10 ' Bucle 10 veces.
MiMatriz(I) = I ' Inicializa la matriz.
Next I
La instrucción siguiente cambia el tamaño de la matriz pero no borra elementos.
Redim Preserve MiMatriz(15) ' Cambia el tamaño a 15 elementos.
Puedes usar la función Ubound para saber el tope máximo de la matriz si es que tienes que recorrerla después de redimensionarla. Por ej.:
For I = 1 To Ubound(MiMatriz, 1)
valor = MiMatriz(I)
Next I
Donde:
Ubound (eslamatriz, esladimensiondelamatriz)
Saludos,
Pablo
Añade un comentario a esta respuesta
1
Respuesta de
Soledad si te entendí bien lo que necesitas es redimensionar el arreglo en tiempo de ejecución, para esto se utiliza "ReDim" y si lo que deseas es redimensionar sin modificar los datos del arreglo lo debes hacer del Siguiente modo
ReDim Preserve MiArreglo(Nuevo tamaño) as Tipo
La palabra clave Preserve se utiliza para conservar los datos de la matriz existente cuando se cambia el tamaño de la última dimensión. En matrices multidimensionales sólo se podrá modificar el tamaño de la última dimensión.
Espero haber resuelto tu duda si no es así te invito a detallarme más aun tu problema.
Añade un comentario a esta respuesta
1
Respuesta de Anónimo
¿Mira lo único que tienes que hacer es voverlos a dimensionar por que por ejemplo tu los dimensionas con un dim(valor) verdad? Bueno ahora si quieres que cambie dinámicamente lo que tienes que hacer es ponerle un redim(nuevo valor) y listo esta bien fácil.(Revisa la sintaxis del comando es casi igual ala del dim)
Ojo que esto solo sale en los basic.
Espero haberte ayudado..
Saludos!
Añade un comentario a esta respuesta
1
Respuesta de
Primero tienes que declarar el arreglo (sin especificar el tamaño):
'este arreglo guardara datos del tipo integer.
Dim arreglo() As Integer
'si queres guardar arreglos de cualquier tipo declaralo asi:
Dim arreglo() As Variant
'si queres modificar el tamaño del aregglo hacelo asi
ReDim arreglo(1 To 1)
'en este ejemplo el arreglo tiene un unico elemento, y empieza en 1.
ReDim arreglo(0 To 2)
'en este ejemplo el arreglo tiene 3 elementos y empieza en 0.
'en los ejemplos anteriores, si tenias algun valor almacenado en el arreglo, te los ponian en cero (eliminaba).
'si queres modificar el tamaño del arreglo, preservando los valores almacenados en el mismo hace lo sig.
ReDim Preserve arreglo(1 To 3)
'en el siguiente ejemplo se le agrega 1 al tamaño del arreglo.
ReDim Preserve arreglo(1 To UBound(arreglo) + 1)
'por ultimo para agregar un valor a un arreglo se hace de la siguiente forma:
arreglo(posicion) = valor
'por ejemplo, si se quiere agregar al final se hace asi:
arreglo(UBound(arreglo)) = valor
'pero si se quiere agregar al inicio se hace asi:
arreglo(1)=valor
'si el arreglo fue declarado como Dim arreglo(1 to 3) as integer, pero si fue declarado como Dim arreglo(4 to 5) as integer se hace asi:
arreglo(4)=valor
Espero que te sirva de ayuda. No te olvides de ponerle puntaje a la respuesta.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje

Más respuestas relacionadas

¿No es la pregunta que estabas buscando?
Puedes explorar otras preguntas del tema Visual Basic o hacer tu propia pregunta: