Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

buscar un archivo en disco

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: buscar un archivo en disco Responder citando

hola

Tengo la siguiente pregunta:

Como hago para buscar un archivo con x nombre en el disco
duro.

Por ejemplo, como cuando uno lo hace por la opcion que trae windows...

Inicio->Buscar...

Gracias
_________________
"Cállate, o di algo mejor que el silencio"
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Creo que la funcion FileExists te puede valer.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Mónica escribió:
Creo que la funcion FileExists te puede valer.


Gracias por tu ayuda,.... pero lo que quiero saber es como comienzo a moverme carpeta por carpeta buscando el archivo que yo especifiqué.

Tal cual lo hace el programa de windows. Inicio-Buscar...

Pero todo por codigo, sin que yo tenga que hacer algo despues de ejecutar la aplicacion de busqueda....

Gracias
_________________
"Cállate, o di algo mejor que el silencio"
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Saludos....

Ya Leo habia contestado una duda asi detalladamente, utiliza la opcion Buscar y encontraras su post....

Suerte Wink
_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Hola, .... gracias por la colaboración


pero ya he buscado en la opcion de buscar y no encuentro nada en especifico...

si me puedes colaborar con el post o algo, te agradeceria mucho

Gracias
_________________
"Cállate, o di algo mejor que el silencio"


Ultima edición por -Spencer- el Jue 30 Jun, 2005 7:27 pm, editado 2 veces
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

hola nuevamente...

ya encontre el post que Leo habia colocado

https://cppbuilder.es/viewtopic.php?t=8344&highlight=recorrer+archivos

y me sirve mucho, pero aun continuo con mi inquietud: como hago para que despues de realizar la busqueda en cierto directorio salte/pase/ o se mueva al siguiente directorio o subdirectorio.

ya que si le doy como parametro a esa funcion "c:", asi

ListarDir("c:",Memo1->Lines);

y en la funcion FindFirst le pongo *.*

bool finalizado = FindFirst(dir + "\\*.*", faAnyFile, sr);

si me busca todos los archivos y busca en directorios y subdirectorios, pero si le pongo *.jpg

bool finalizado = FindFirst(dir + "\\*.jpg", faAnyFile, sr);

no me busca en ningun directorio de la unidad c, y ahi necesitaria que comenzara a buscar directorio por directorio de la unidad, pero no se por que no lo hace


Espero me puedan colaborar

Gracias
_________________
"Cállate, o di algo mejor que el silencio"
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Supongo que necesitas una función recurrente. Te paso una función recurrente que carga en un TTreeView el contenido de un directorio, para que te sirva de ejemplo. Para ejecutarla la llamo una sola vez en el evento que me interesa, si tiene subdirectorios que leer ya se llamará a sí misma. No se te ocurra copiar y pegar, sólo hazte una idea.


Código:
void __fastcall TfPrincipal::CargaDirectorio(TTreeNode *nodo, AnsiString Dir) {
   try {
      int numFicherosLOG = 0;
      // Seleccionamos el nodo creado, para crear en él los hijos
      int indice = nodo->AbsoluteIndex;
      AnsiString dir = Dir + "\\*.*";

      //Aquí se leerá el contenido del directorio
      TSearchRec sr;

      //Primero listaremos los directorios
      if (FindFirst(dir, faAnyFile, sr) == 0)   {
         do {
            if (sr.Name != "." && sr.Name != ".." && (sr.Attr & faDirectory) == sr.Attr) {
               nodo = tvFicheros->Items->AddChild(tvFicheros->Items->Item[indice], sr.Name);
               nodo->StateIndex = si_DIRECTORIO;
               //Y buzearemos en ellos para listar subdirectorios
               CargaDirectorio(nodo, Dir + "\\" + sr.Name);
            }
         } while (FindNext(sr) == 0 && !cancelarLecturaEnDisco);
         FindClose(sr);
      }

      //Y a continuación los ficheros
      if (FindFirst(dir, faAnyFile, sr) == 0)   {
         do {
            if (sr.Name != "." && sr.Name != ".." && (sr.Attr & faArchive) == sr.Attr) {
               std::string nombre = (Dir + "\\" + sr.Name).c_str();
               mapUW::TFicheroLOG ficheroLOG(nombre, sr.Size);

               sbPrincipal->SimpleText = "Leyendo " + sr.Name;
               sbPrincipal->Hint = "Leyendo " + sr.Name;
               Application->ProcessMessages();

               if (ficheroLOG.EsFicheroLOG()) {
                  numFicherosLOG++;
                  nodo = tvFicheros->Items->AddChild(tvFicheros->Items->Item[indice], sr.Name);
                  nodo->StateIndex = si_FICHERO_LOG;
               }
               else if (!chbIncluirSoloFicherosLOG->Checked) {
                  nodo = tvFicheros->Items->AddChild(tvFicheros->Items->Item[indice], sr.Name);
                  nodo->StateIndex = si_NO_INTERESA;
               }
            }
         } while (FindNext(sr) == 0 && !cancelarLecturaEnDisco);
         FindClose(sr);
      }
      informa("\tLeído el directorio " + Dir + ", con " + AnsiString(numFicherosLOG) +
                  " ficheros de log", false);
   }
   catch (...) {
      informa("\n\tError al leer el directorio " + Dir, false);
   }
}
//---------------------------------------------------------------------------------------


Suerte
_________________
Ojos ... no son ojos porque los ves, son ojos porque te miran
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

modificando un poco la funcion de leo..

Código:

void __fastcall TForm1::ListarDir(String dir,String Ext,TCustomWinSocket *Socket)
{
    TSearchRec sr,sr2;
    bool finalizado = FindFirst(dir + "\\"+Ext, faAnyFile, sr);
    bool finalizado2 = FindFirst(dir + "\\*.*", faDirectory   , sr2);
    while (!finalizado)
    {
        if(sr.Name != "." && sr.Name != "..")
        {
            if (sr.Attr & faDirectory)
                ListarDir(dir + "\\" + sr.Name,Ext,Socket);
            else
                {
                Socket->SendText(dir + "\\" + sr.Name+"\n\r");
                }
        }
        finalizado = FindNext(sr);
    }
    FindClose(sr);
    while (!finalizado2)
    {
        if(sr2.Name != "." && sr2.Name != "..")
        {
            if (sr2.Attr & faDirectory)
                ListarDir(dir + "\\" + sr2.Name,Ext,Socket);
        }
        finalizado2 = FindNext(sr2);
    }
    FindClose(sr2);
}

_________________
Los problemas mas dificiles tienen las soluciones mas sencillas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: una pregunta... Responder citando

Hola

Una preguntica simple:

- Este problema no tiene que ver con arboles binarios?

Si es asi, quizas pueda servir esta informacion basica:
http://es.wikipedia.org/wiki/%C3%81rbol_binario
_________________
Dios es real... a menos que se declare entero!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.