Resolviendo problemas en VisualBasic

Arreglos de tamaño variable

Hace dos años empecé a trabajar en un programa que otra persona ya había comenzado. Y éste no era el único problema: tenía que ser en VisualBasic.Net.

Mi primer contacto con VisualBasic fue con la versión 3. Aunque fácil de usar me pareció muy limitado, especialmente en comparación con otras herramientas que había usado anteriormente, como Delphi por ejemplo. Con .Net había la promesa de mayores facilidades que ponían a VisualBasic.Net al mismo nivel que los otros lenguajes soportados en Visual Studio. Pero esto implicó cambios importantes en el lenguaje así como una colección muuuuuy grande de clases.

Ni modo. Hay que adaptarse. Así que tomé uno de los tantos libros sobre VisualBasic.Net que hay en el mercado, lo leí rápidamente (dos semanas, medio tiempo) y me puse a trabajar. Después de un par de años, me siento cómodo con esta herramienta y hasta desarrollé unos cuantos "trucos" que quiero compartir con otros desarrolladores de software.

Problema

¡Comencemos! Supongamos que tenemos que leer unos nombres de una base de datos y mantenerlos en memoria hasta que hayamos terminado de usarlos. Mmmm. Eso suena a que podemos usar un arreglo. Ya estaría el problema resuelto sino fuera porque no sabemos cuántos nombres vamos a leer.

Una opción sería definir un arreglo con un gran tamaño, lo suficientemente grande como para contener la lista más larga que se nos ocurra es posible se presente. Si la computadora donde vaya a correr el programa tuviera mucha memoria ya podríamos pasar a otra cosa. Pero la realidad raramente nos complace. Además desde el punto de vista del programador esta solución dista de ser profesional porque malgasta memoria.

Otra opción es usar ReDim que nos permite cambiar las dimensiones de un arreglo y hasta preservar los datos que éste contenga. Lo único que tendríamos que hacer es llevar un contador de datos y cuando lleguemos al límite, usamos ReDim para aumentar el arreglo.

VisualBasic.Net nos provee una solución más elegante, el ArrayList. Veamos cómo usarlo.

Para declarar y crear un ArrayList escribimos

Dim miArreglo As New ArrayList

¡y ya está! No necesitamos especificar un tamaño.

Cuando agregamos un elemento en el arreglo, éste aumenta su tamaño dinámicamente. Y hablando de agregar un elemento, se hace así

miArreglo.Add("nombre1") miArreglo.Add("nombre2") miArreglo.Add("nombre3")

esto agrega las cadenas de caracteres "nombre1", "nombre2" y "nombre3" al arreglo miArreglo. No estamos limitados a cadenas de caracteres, podemos usar números u otros objetos.

Para leerlos usamos la misma notación al que estamos acostumbrados:

MsgBox(miArreglo(0)) MsgBox(miArreglo(1)) MsgBox(miArreglo(2))

Fíjese que el primer elemento está almacenado en la posición 0. Esto quiere decir que si queremos ver todos los elementos usaríamos el ciclo

For i = 0 to miArreglo.Count - 1 MsgBox(miArreglo(i)) Next

miArreglo.Count dá el número de elementos que contiene.

Si queremos saber si un nombre ya está en el arreglo usamos Contains:

If miArreglo.Contains("nombre3") Then MsgBox("El arreglo contiene nombre3") Else MsgBox("El arreglo no contiene nombre3") End If

Contains realiza una búsqueda lineal y dá como resultado True si el arreglo contiene el elemento especificado y False en caso contrario.

Esto es suficiente para trabajar con ArrayList. Para aprovecharlo al máximo revise la ayuda de Visual Studio. De interés son BinarySearch, Insert, IndexOf, LastIndexOf, Remove, RemoveAt y Sort.

 

Publicado el 18 de septiembre del 2007.

CSS original de styleshout