Ver Mensaje Individual
  #5  
Antiguo 22-11-2013
darkmir darkmir is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 28
Reputación: 0
darkmir Va por buen camino
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.
Responder Con Cita