Ejecuta el programa y escribe *.*
en el TextBox, pulsa en el botón y te mostrará en el listbox todos
los archivos del directorio actual.
Vamos a ver que es lo que hace el
código:
sTmp = Dir$(Text1.Text)
Con esto, guardamos en sTmp el
primer fichero que coincida con lo que hemos escrito en el Text1.
If Err = 0 Then
Si no se produce un error...
Do While Len(sTmp)
...se entra en el bucle, pero
sólo si el contenido de sTmp no es una cadena vacía. Recuerda que
DIR$ devuelve una cadena vacía si no se ha encontrado un fichero
que coincida con lo indicado...
List1.AddItem sTmp
Esto añade al ListBox un nuevo
elemento con el contenido de sTmp
sTmp = Dir$
Fíjate que DIR$ se usa sin
indicarle nada más, úsalo de esta forma si quieres que siga
comprobando si hay más ficheros que coincidan con la
especificación indicada la vez anterior que se le pasó un
parámetro. Si el contenido del TextBox tenía algún signo
comodín, Dir$ devolverá el siguiente fichero que coincida, en caso
de que no queden más ficheros "coincidentes", devolverá
una cadena vacía.
Loop
Repite el bucle si se cumple la
condición que pusimos después de DO WHILE, es decir: continuará
si la longitud, número de caracteres, de sTmp NO ES CERO.
Prueba, sin cerrar el programa, con
varias cosas, por ejemplo: *.vbp, *.bas, etc.
¿Que pasa?
Si estás indicando varias cosas que buscar, y las encuentra, te
darás cuenta que el listbox se va llenando... es decir, además de
lo nuevo, que estará al final, sigue lo anterior...
¿Cómo solucionarlo?
Borrando el contenido del listbox.
Para borrar el contenido del
listbox, usa esto:
List1.Clear
¿Dónde debo ponerlo?
En nuestro ejemplo, yo lo pondría justo después del On Local
Error..., o antes, da igual, ya que lo que se pretende es que se
borre al hacer CLICK en el botón.
Por supuesto no lo pongas dentro del DO...LOOP, ya que no serviría
para lo que queremos... puesto que se borraría continuamente...
Sí, ya sé que no eres tan torpe como para hacerlo, pero...
Un detalle que puede que sea
simple, pero que en nuestro ejemplo nos ahorraría pulsaciones. Si
al pulsar INTRO se simulara el CLICK del botón, nos ahorraría el
tener que "desplazarnos" a ese botón para que muestre lo
que ha encontrado y si queremos seguir mostrando más cosas, el
tener que desplazarnos nuevamente al TextBox.
Para conseguir esto, todo lo que
tenemos que hacer, es indicarle al VB que el botón sea un botón
"por defecto".
Muestra el form, y pulsa una vez en el botón, te mostrará la
ventana de propiedades de este control, busca la propiedad DEFAULT y
márcala como TRUE, verás que el botón ahora está remarcado con
un borde negro.
Ejecuta de nuevo el programa,
escribe cualquier cosa en el TEXT1 y pulsa INTRO, ahora te mostrará
los ficheros hallados, pero el cursor permanece en el TextBox, listo
para poder escribir una nueva especificación...
Ahora vamos a los ejercicios:
1.- Modifica el ejemplo para que en
lugar de guardar los ficheros hallados en un listbox, lo haga en un
array.
2.- Una vez hecho esto, añade al listbox todos los ficheros
hallados... mejor dicho, para que no hagas trampas, añade al
listbox el contenido del array, es decir todos y cada uno de los
ficheros previamente asignados.
3.- Añade otro botón al form y al pulsar en él, que guarde en un
fichero, (por ejemplo: hallados.txt), todos los ficheros hallados,
es decir los que estén en el array.
Creo que con esto, ya tienes para
entretenerte un rato.
Como pista, ya sabes el tipo de pistas que doy..., te diré que la
asignación al array, puedes hacerla de dos formas:
UNA: Usando un número máximo de ficheros a asignar.
DOS: Usando un número variable, es decir que se añadan sólo la
cantidad de ficheros hallados.
Y si haces los ejercicios de las
dos formas posibles, mejor aún.
Si ves que te atrancas y no sabes
por dónde hincarle el diente, aunque sea postizo, échale un
vistazo a la entrega ocho y a la entrega doce, en ellas encontrarás
la solución a estos ejercicios... bueno, la solución, lo que se
dice la solución: no, pero si unas verdaderas auto-pistas para
poder solucionarlos.