• Sábado 28 de Septiembre de 2024, 23:55

Autor Tema:  Recuperar Nombres De Archivos  (Leído 2518 veces)

cucusumusu

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Recuperar Nombres De Archivos
« en: Martes 26 de Junio de 2007, 14:58 »
0
Hola a todos.
Estoy empezando a programar con C++ Builder 6 y me gustaría hacer una pequeña aplicación en la que se seleccione una carpeta del disco duro y recupere todos los nombres de ficheros de esa carpeta( o sea todo lo que hay en ella,incluyendo carpetas,ficheros, películas, etc.).
La idea es copiar todos esos nombres de ficheros en un .txt.

Esta es la función para recorrer el disco duro y seleccionar una carpeta:

void __fastcall TfrmMain::BuscarClick(TObject *Sender)

{
    String ruta_f;
    AnsiString Directory = "F:\\";
    SelectDirectory(Directory, TSelectDirOpts(), 0);
    Memo1->Text = Directory;  //Guarda la ruta a memo1
    ruta_f=Memo1->Text; //La muestro en Memo1


   
}

Con ésta función pretendo comprobar si funciona el FindFirst, que si no me equivoco busca el primer fichero(según unos atributos) en la ruta indicada,recuperando entre otras cosas el nombre del fichero.

void __fastcall TfrmMain::CrearClick(TObject *Sender)

{
       String ruta_f;
       TSearchRec sr;

       ruta_f=Memo1->Text; //Recojo la ruta del directorio selecionado

       if (FindFirst(ruta_f,faAnyFile,sr)==0) //Si en este directorio existen ficheros de    
       //tipo "faAnyFile"
       Memo2->Text = sr.Name;// mostrar en el memo2 el nombre del primer fichero    
       //encontrado

}

Bueno pues aqui es donde falla el tema,en la Memo2 me muestra el nombre de la carpeta que seleccione previamente.Si seleccione la ruta C:\Peliculas\Accion ,
me muestra el nombre "Accion".Lo que pretendo es que me muestre el nombre del primer fichero(por ejemplo: "Conan_el_barbaro.avi".Luego ya me encargare de meter un bucle para recuperar todos los nombres de la carpeta etc.

Como dije soy nuevo en C++Builder y no consigo dar con el problema,muchas gracias.  :hola:

cucusumusu

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Recuperar Nombres De Archivos
« Respuesta #1 en: Miércoles 27 de Junio de 2007, 19:02 »
0
Tras muchas horas recorriendome tutoriales y la ayuda de borland consegui que con una ruta (que yo mismo escribo para facilitarme la vida) de la carpeta elejida,me escriba en un fichero los nombres de los ficheros de dicha carpeta.
El único problema es que solo me escribe 20 y yo tengo como 40 ficheros en esa carpeta,a así que no se lo que falla aún.
Me seguiré buscando la vida, pero por si a alguien le interesa o tiene un problema similar aqui va el código:

void __fastcall TfrmMain::CrearClick(TObject *Sender)

{
       ofstream outfile("Listado_Peliculas.txt");//creo el fichero
       String ruta_f;
        TSearchRec sr;//para poder utilizar FindFirst,FindNext
       int iAttributes=faAnyFile;//el tipo de fichero a buscar
       ruta_f="F:\\patatin\\patatan\\*";//las barras y el comodín final importante
 
       if (FindFirst(ruta_f,iAttributes,sr)==0)//buscar los ficheros en la ruta elegida con
       //esos atributos,si es asi devuelve 0
       {
        do
         {

           String NomArchivos;
           NomArchivos=sr.Name;//recojo el nombre del primer fichero
           outfile << "*" << NomArchivos.c_str()<< endl;
            //lo escribo en el .txt pasando
           //con el método c_str() la variable a una cadena c( ya que si no da error-pide  
          //AnsiString

           (FindNext(sr)==0);//siguiente fichero
         }
        while (FindNext(sr)==0);//mientras existan ficheros en la carpeta
        FindClose(sr);//cierro la búsqueda
        outfile.close();//cierro el fichero creado
       }


}

No pretendo que se me ayude para que me indiquen porque me escribe solo una parte de los ficheros de la carpeta.Simplemente va dirigido a quien lo necesite.  &lt;_&lt;

memefire

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Recuperar Nombres De Archivos
« Respuesta #2 en: Jueves 28 de Junio de 2007, 02:18 »
0
¿Cómo se podría hacer algo similar pero en lugar de obtener los archivos de una carpeta, obtener las subcarpetas que hay dentro de una carpeta? Estoy indagando en el tema pero estoy algo perdida, os agradecería si me dierais alguna idea al respecto.