Autor Tema: Visual Basic ¿Cómo saber si un array dinámico ya ha sido creado?  (Leído 3652 veces)

Gilding

  • Sin experiencia
  • *
  • Mensajes: 44
    • Ver Perfil
Hola a todos!

En el tema CU00346A del curso de Visual Basic se nos propone crear una aplicación que permita añadir un dato a un array dinámico, borrar un dato del array, mostrar el número total de datos del array (tamaño del array) e imprimir todos los valores del array en pantalla. He logrado crear el programa sin mayores problemas. Realizando esta tarea se me ha presentado una duda: ¿Cómo podemos comprobar si un array dinámico ha sido o no ha sido redimensionado por primera vez, en Visual Basic?.

He encontrado alguna función axuliar por la red que comprueba si el array ya ha sido redimensionado por primera vez devolviendo una booleana, pero son para Visual Basic 6 o inferiores, y en Visual Basic 2010 que es la versión que estoy utilizando no funcionan.

Un saludo y muchas gracias a todos por vuestras respuestas.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re: Visual Basic ¿Cómo saber si un array dinámico ya ha sido creado?
« Respuesta #1 en: 12 de Diciembre 2014, 09:08 »
Podrías hacerlo de distintas formas:

- En un array el índice inferior y el superior deben ser distintos, si no sería un array de un solo elemento (lo cual no tendría mucho sentido)

Podríamos escribir if LBound(nombreDelaArray) == UBound(nombreDelArray) ... entonces el array no ha sido redimensionado.

- Llevando un contador manualmente. Por ejemplo contadorRedimensionamientos = 0. Cada vez que hagas un Redim, añades 1 al contador: contadorRedimensionamientos = contadorRedimensionamientos +1

Así sabrías cuántas veces se ha redimensionado.

- If NombreDelArray.Count > 0 Then el array tiene elementos (ha sido redimensionado).

- If nombreDelArray IsNot Nothing el array ha sido redimensionado

Salu2!

Gilding

  • Sin experiencia
  • *
  • Mensajes: 44
    • Ver Perfil
Re: Visual Basic ¿Cómo saber si un array dinámico ya ha sido creado?
« Respuesta #2 en: 12 de Diciembre 2014, 14:52 »
Muchas gracias por tu respuesta Ogramar.

La última línea que me indicas es la que se ajusta exactamente a lo que preguntaba:

- If nombreDelArray IsNot Nothing el array ha sido redimensionado

Las otras soluciones que me has planteado seguramente se puedan aplicar a otros lenguajes, pero Visual Basic no te permite acceder al límite superior e inferior del array hasta que este haya sido redimensionado al menos una vez, aunque se redimensione a cero (está expuesto al final del tema además). Tampoco es posible utilizar la longitud del array, parece que para Visual Basic sencillamente el array dinámico no existe hasta que es redimensionado al menos una vez.

Tomo nota del uso que haces del contador, ya que esa "técnica" puede utilizarse como una especie de "contador universal" que puede ser de gran ayuda en una gran amplitud de problemas, ya sea como una variable local a un método, al ambito de una clase o incluso global para todo un programa.

De nuevo muchas gracias por tu ayuda.

Un saludo!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".