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

Tutorial: escribir su propia findfiles herramienta : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación