Cita:
Empezado por darkmir
Hola ecfisa,
estoy amoldando el codigo, pero me lanza un error en una parte, este es el codigo modificado:
Código:
char *Dir = "F:\\" ;
struct _finddata_t arch;
long hFile;
char tmp[MAX_PATH];
chdir(Dir); //cambio al directorio actual
arch.attrib = _A_SUBDIR; //define si el atributo es un directorio
if( (hFile = _findfirst("*.*", &arch) ) != -1)
{
do{
if (arch.attrib == _A_SUBDIR)
{
if (strcmp(arch.name,".")!= 0 && strcmp(arch.name,"..") != 0)
{
strcpy(tmp, Dir);
strcat(tmp, "\\");
strcat(tmp, arch.name);
}
}
else
ListBox1->Items->Add(String(arch.name));
} while (_findnext(hFile, &arch) == 0);
_findclose(hFile);
};
me muestra solo los archivos pero no las carpetas, si puedes darme una manito te lo volveria a agradecer.
Saludos.
|
Hola darkmir.
En ese caso estas omitiendo la llamada recursiva por lo que el código va a tener una funcionalidad similar al de tu primer mensaje (
#1 ). Es decir, no va a recorrer el árbol de carpetas y subcarpetas listándote los archivos.
Pero si incluís la línea que llama recursivamente a la función y la profundidad de la búsqueda es enorme provoca el desbordamiento de la pila, por este camino estas en un callejón sin salida. Lo que tenes que hacer es reformular el algoritmo para que funcione de forma iterativa.
En este enlace tenes ejemplos búsqueda sobre un árbol binario de ámbos modos:
Árbol binario de búsqueda
Saludos