Hola.
Me quedó la duda del por qué del error, y según parece lo causa la función
ChDir que es la diferencia significativa entre el código de
escafandra que funciona correctamente y la segunda opción que te sugerí en el mensaje
#2 que da el error. Pero ignoro por qué causa lo provoca, me imagino que no está preparada para soportar los nuevos nombres...
Para sumar opciones, otro modo es:
Código:
void ListFiles(String folder, TStrings *TS)
{
WIN32_FIND_DATA wfd;
HANDLE hFind;
DWORD ERR;
hFind = FindFirstFile(String(folder + "\\*.*").c_str(), &wfd);
if (hFind != INVALID_HANDLE_VALUE) {
do {
if (String(wfd.cFileName) != "." && String(wfd.cFileName) != "..") {
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
ListFiles(String(folder+"\\"+wfd.cFileName), TS);
else
TS->Add(String(folder+"\\"+wfd.cFileName));
}
} while(FindNextFile(hFind, &wfd));
FindClose(&wfd);
}
}
Llamada:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListFiles("C:\\Windows", ListBox1->Items);
}
Saludos