Busqueda de archivos

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.

1 respuesta

Respuesta
1
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...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas