Busqueda de archivos Hola, necesito realizar la busqueda de uno o varios archivos teniendo como parámetro el nombre y la ruta de inicio, que busque en todos los subdirectorios y carpetas de la ruta dada y finalmente obtenga la ruta completa si el archivo existe, gracias por la ayuda.
Fijate en la ayuda de Delphi el ejemplo que viene con FindFirst, FindNext y FindClose. Te lo mando acá: The following example uses an edit control, a button, a string grid, and seven check boxes. The check boxes correspond to the seven possible file attributes. When the button is clicked, the path specified in the edit control is searched for files matching the checked file attributes. The names and sizes of the matching files are inserted into the string grid. procedure TForm1.Button1Click(Sender: TObject); var sr: TSearchRec; FileAttrs: Integer; begin StringGrid1.RowCount := 1; if CheckBox1.Checked then FileAttrs := faReadOnly else FileAttrs := 0; if CheckBox2.Checked then FileAttrs := FileAttrs + faHidden; if CheckBox3.Checked then FileAttrs := FileAttrs + faSysFile; if CheckBox4.Checked then FileAttrs := FileAttrs + faVolumeID; if CheckBox5.Checked then FileAttrs := FileAttrs + faDirectory; if CheckBox6.Checked then FileAttrs := FileAttrs + faArchive; if CheckBox7.Checked then FileAttrs := FileAttrs + faAnyFile; if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then begin with StringGrid1 do begin if (sr.Attr and FileAttrs) = sr.Attr then begin Cells[1,RowCount-1] := sr.Name; Cells[2,RowCount-1] := IntToStr(sr.Size); end; while FindNext(sr) = 0 do begin if (sr.Attr and FileAttrs) = sr.Attr then begin RowCount := RowCount + 1; Cells[1, RowCount-1] := sr.Name; Cells[2, RowCount-1] := IntToStr(sr.Size); end; end; FindClose(sr); end; end; end; Creo que es lo que estás buscando, o por lo menos lo podés arreglar para ir grabando en un archivo de texto (fijate en la ayuda de TextFile). Por lo que me pedís, es como si estuvieras buscando *.*, entonces cada vez que encuentres un archivo tendrías que ver si su atributo es un DIRECTORIO (o carpeta), y llamar a la misma función recursivamente (no lo probé, pero es lo que se me ocurre). Fijate que el ejemplo pone las cosas en un StringGrid (creo), pero te da una pista de cómo ver si el archivo es un directorio. Si te sirvió, calificame en TodoExpertos. Si no, avisame qué te falta para poder hacer lo que querés. Marcelo PD: Tenés que adaptar un poco el código a lo que vos pretendas, pero creo que por ahí va la cosa...