Hola ecfisa,
bueno , en si, no me manda ningún mensaje de error, pero se cuelga y se cierra el programa, me he dado cuenta que es con carpetas que tienen bastantes archivos, por ejemplo lo hice con "F:\\DOCUMENTOS\\" y ahi sale se cuelga, tengo algo de 400 gb de contenido, lo depure para ver el error y sale esto:
pero lo arregle con try catch, ahora no me sale error, pero me parece que fuera por los atributos porque solo me pasa con esa carpeta y con la carpeta "C:\\windows\\", con otras carpetas corre sin problemas.
Otra consulta, quise hacerlo en uno solo la funcion y la llamada pero no me sale exactamente como los anteriores codigos, como por ejemplo,unir en uno solo este código el cual me proporcionaste:
Código:
void ListFiles(char *Dir, TListBox *LB)
{
struct _finddata_t fdt;
long hFile;
char tmp[MAX_PATH];
chdir(Dir);
fdt.attrib = _A_SUBDIR;
if( (hFile = _findfirst("*.*", &fdt) ) != -1) {
do {
if (fdt.attrib == _A_SUBDIR) {
if (strcmp(fdt.name,".")!= 0 && strcmp(fdt.name,"..") != 0) {
strcpy(tmp, Dir);
strcat(tmp, "\\");
strcat(tmp, fdt.name);
ListFiles(tmp, LB);
}
}
else
LB->Items->Add(String(fdt.name));
} while (_findnext(hFile, &fdt) == 0);
_findclose(hFile);
};
}
/////////////////////////////////////////////////////////
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListFiles("F:\\", ListBox1);
}
//---------------------------------------------------------------------------
lo queria unir así:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *Dir = "F:\\";
struct _finddata_t fdt;
long hFile;
char tmp[MAX_PATH];
chdir(Dir);
fdt.attrib = _A_SUBDIR;
if( (hFile = _findfirst("*.*", &fdt) ) != -1) {
do {
if (fdt.attrib == _A_SUBDIR) {
if (strcmp(fdt.name,".")!= 0 && strcmp(fdt.name,"..") != 0) {
strcpy(tmp, Dir);
strcat(tmp, "\\");
strcat(tmp, fdt.name);
// ListFiles(tmp, LB);
}
}
else
ListBox1->Items->Add(fdt.name); // para escoger que listar, archivos o carpetas.
} while (_findnext(hFile, &fdt) == 0);
_findclose(hFile);
};
}
pero no me muestra nada, bueno lo queria unir, para separar directorios de archivos, y al final escoger cual listar, o bien directorios o bien archivos, algo así:
ListBox1->Items->Add(fdt.name); // archivos
ListBox1->Items->Add(Dir); // Directorios.
si puedes ayudarme seria estupendo, igual, si me sale el código, lo estare comentando por acá.
Gracias y Saludos.