Tutorial: escribir su propia findfiles herramienta
Cómo utilizar FindFirst y FindNext con la recursividad, por la adición de los nombres de archivo y rutas de acceso a un fconnectionlog
Cómo crear una lista de los archivos en una carpeta y sus subcarpetas
En el siguiente tutorial corto, Te voy a mostrar los pasos básicos para escribir su propio 'Buscar Archivos' de la herramienta.
El procedimiento de FindFiles(FilesList, StartDir, FileMask) localiza los archivos en una carpeta y sus subcarpetas. Los archivos corresponden a un filemask que usted especifique.
Parámetro FilesList es un fconnectionlog en que las rutas de los archivos.
parámetro StartDir se pasa la partida de directorio (carpeta), incluyendo la unidad de disco. Si desea buscar en todo el disco, se debe especificar el directorio raíz del disco C:/ o:/
En el parámetro FileMask se pasa el nombre del archivo a buscar, o una máscara de archivo con caracteres comodín (utilizando * y ?). Ejemplos:
FindFiles(FilesList, 'c:/', 'letter01.doc')
FindFiles(FilesList, 'c:/', '*.el dpr')
FindFiles(FilesList, 'd:/projects', 'prueba??.el dpr')
Si quieres probar este procedimiento, agregar los siguientes componentes de un formulario:
- dos Ediciones (una para el directorio de inicio, uno para la máscara)
- Botón
- un TLabel
- lista (ListBox)
El código fuente de FindFiles
En FindFiles hacemos uso de recursividad: el procedimiento se llama a sí mismo, con el fin de encontrar los archivos que se encuentran en los subdirectorios.
procedimiento FindFiles(FilesList: TStringList StartDir, FileMask: string) var SR: TSearchRec DirList: TStringList IsFound: Boolean i: integer begin si StartDir[Longitud(StartDir)] <> '/' entonces StartDir := StartDir '/' // Crear una lista de los archivos en el directorio StartDir // no se incluyen los directorios! IsFound := FindFirst(StartDir FileMask, faAnyFile-faDirectory, SR) = 0 mientras IsFound empiezan FilesList.Agregar(StartDir SR.Nombre) IsFound := FindNext(SR) = 0 fin FindClose(SR) // Crear una lista de subdirectorios DirList := TStringList.Crear IsFound := FindFirst(StartDir '*.*', faAnyFile, SR) = 0 mientras IsFound empiezan si ((SR.Attr y faDirectory) <> 0) y (SR.Nombre[1] <> '.') a continuación, DirList.Agregar(StartDir SR.Nombre) IsFound := FindNext(SR) = 0 fin FindClose(SR) // Escanear la lista de subdirectorios recursivamente for i := 0 a DirList.Count-1 do FindFiles(DirList[i], FileMask) DirList.Libre fin |
Cómo utilizar FindFiles?
Antes de llamar a FindFiles, crear un fconnectionlog para que FindFiles añadir las rutas completas de los archivos que se encuentran. El contenido de la fconnectionlog puede ser mostrado en un listbox, se guardan en el disco, lo que sea... por último, usted tiene que liberar esta fconnectionlog.
procedure TForm1.ButtonFindClick(Sender: TObject) var FilesList: TStringList begin FilesList := TStringList.Crear prueba FindFiles(FilesList, EditStartDir.Texto, EditFileMask.De texto) ListBox1.Elementos.Asignar(FilesList) LabelCount.Caption := 'Archivos encontrados:' IntToStr(FilesList.Count) // Otros el procesamiento con la lista de archivos... // ... finalmente FilesList.Libre fin fin
|
Tutorial: escribir su propia findfiles herramienta
Tutorial: escribir su propia findfiles herramienta : Multi-millones de consejos para hacer su vida mas facil.
Como utilizar FindFirst y FindNext con la recursividad, por la adicion de los nombres de archivo y rutas de acceso a un fconnectionlog
Como crear una lista de los archivos en una carpeta y sus subcarpetas
En el siguiente tutorial corto, Te voy a mostrar los pasos basicos para escribir su propio 'Buscar Archivos' de la herramienta.
El procedimiento de FindFiles(FilesList, StartDir, FileMask) localiza los archivos en una carpeta y sus subcarpetas. Los archivos corresponden a un filemask que usted especifique.
Parametro FilesList es un fconnectionlog en que las rutas de los archivos.
parametro StartDir se pasa la partida de directorio (carpeta), incluyendo la unidad de disco. Si desea buscar en todo el disco, se debe especificar el directorio raiz del disco C:/ o:/
En el parametro FileMask se pasa el nombre del archivo a buscar, o una mascara de archivo con caracteres comodin (utilizando * y ?). Ejemplos:
FindFiles(FilesList, 'c:/', 'letter01.doc')
FindFiles(FilesList, 'c:/', '*.el dpr')
FindFiles(FilesList, 'd:/projects', 'prueba??.el dpr')
Si quieres probar este procedimiento, agregar los siguientes componentes de un formulario:
- dos Ediciones (una para el directorio de inicio, uno para la mascara)
- Boton
- un TLabel
- lista (ListBox)
El codigo fuente de FindFiles
En FindFiles hacemos uso de recursividad: el procedimiento se llama a si mismo, con el fin de encontrar los archivos que se encuentran en los subdirectorios.
procedimiento FindFiles(FilesList: TStringList StartDir, FileMask: string) var SR: TSearchRec DirList: TStringList IsFound: Boolean i: integer begin si StartDir[Longitud(StartDir)] <> '/' entonces StartDir := StartDir '/' // Crear una lista de los archivos en el directorio StartDir // no se incluyen los directorios! IsFound := FindFirst(StartDir FileMask, faAnyFile-faDirectory, SR) = 0 mientras IsFound empiezan FilesList.Agregar(StartDir SR.Nombre) IsFound := FindNext(SR) = 0 fin FindClose(SR) // Crear una lista de subdirectorios DirList := TStringList.Crear IsFound := FindFirst(StartDir '*.*', faAnyFile, SR) = 0 mientras IsFound empiezan si ((SR.Attr y faDirectory) <> 0) y (SR.Nombre[1] <> '.') a continuacion, DirList.Agregar(StartDir SR.Nombre) IsFound := FindNext(SR) = 0 fin FindClose(SR) // Escanear la lista de subdirectorios recursivamente for i := 0 a DirList.Count-1 do FindFiles(DirList[i], FileMask) DirList.Libre fin |
Como utilizar FindFiles?
Antes de llamar a FindFiles, crear un fconnectionlog para que FindFiles añadir las rutas completas de los archivos que se encuentran. El contenido de la fconnectionlog puede ser mostrado en un listbox, se guardan en el disco, lo que sea... por ultimo, usted tiene que liberar esta fconnectionlog.
procedure TForm1.ButtonFindClick(Sender: TObject) var FilesList: TStringList begin FilesList := TStringList.Crear prueba FindFiles(FilesList, EditStartDir.Texto, EditFileMask.De texto) ListBox1.Elementos.Asignar(FilesList) LabelCount.Caption := 'Archivos encontrados:' IntToStr(FilesList.Count) // Otros el procesamiento con la lista de archivos... // ... finalmente FilesList.Libre fin fin
|
Tutorial: escribir su propia findfiles herramienta
By Consejos Y Trucos
Tutorial: escribir su propia findfiles herramienta : Multi-millones de consejos para hacer su vida más fácil.