
12/09/2021 (versão 3.5)
13/03/2021 (versão 3.4)
01/02/2021 (versão 3.3)
18/12/2020 (versão 3.2)
17/12/2020 (versão 3.1)
IncludeDirItem para incluir itens de diretórios nos resultados da pesquisa.IncludeHiddenFiles e IncludeSystemFiles para SearchHiddenFiles e SearchSystemFiles .TDSFile alterado para TDSResultItem .17/12/2020 (versão 3.0)
ResultList usando o novo objeto TDSFile personalizado. Se você deseja obter a lista de strings, pode usar o novo método GetResultStrings .IncludeHiddenFiles e IncludeSystemFiles propriedades do sistema de sistemas.22/11/2020 (versão 2.0)
Inclusions e propriedades Exclusions .31/10/2020 (versão 1.3)
27/10/2020 (versão 1.2)
26/10/2020 (versão 1.1)
05/05/2020
Ao usar o Delphi e trabalhar com arquivos e diretórios, eventualmente você precisa pesquisar e obter uma lista de arquivos em um diretório ou até mesmo pesquisar arquivos em subdiretos.
Isso pode ser um pouco difícil usando funções antigas e FindFirst e FindNext . Agora, temos novos métodos sobrecarregar TDirectory.GetFiles , disponível na unidade System.IOUtils .
Mas, mesmo usando métodos getfiles, se você precisar de alguns parâmetros avançados, como incluir subdiretos, precisará iterar todos os diretórios. Além disso, se você deseja especificar máscara que inclua alguma parte da string do caminho, precisará trabalhar com strings em seu código toda vez que precisar deste recurso.
Então, decidi criar esse componente para me tornar uma maneira fácil de pesquisar arquivos.
Suporta Delphi Xe3..Delphi 11
Basta preencher as propriedades desejadas e chamar o método Seek .
Em seguida, você pode ler a ResultList da propriedade pública para obter todos os arquivos encontrados. Esta lista contém objetos TDSResultItem .
Dir: String = caminho para pesquisar
Inclusions: TStrings = Se alguma linha for especificada, o componente pesquisará apenas as máscaras especificadas aqui, de acordo com a sintaxe da máscara descrita abaixo.
Exclusions: TStrings = logo após a verificação Inclusions , se o arquivo corresponder às máscaras Exclusions (de acordo com a sintaxe da máscara descrita abaixo), ela será excluída da pesquisa.
Sintaxe das máscaras:
*.txt
myapp.exe
*xyz*.doc
myfile?.rtf
*sub_path*
first_path*
path1path2file.avi
<F>*abc*
Se você usar a string
<F>com uma máscara, ela será considerada apenas a parte do nome do arquivo do caminho. Isso é útil quando a máscara pode ser confundida com a parte do diretório.
Exemplo: vamos supor que exista um caminho C: myApp. Dentro desta pasta, há outra pasta C: myApp subpasta. Dentro desta última pasta, há um arquivo chamado my_app_file.txt.
Portanto, se precisarmos excluir todos os arquivos que contêm o texto "aplicativo", podemos especificar na propriedade Masks: *app* . Mas, neste caso, a pasta também será excluída, porque corresponde ao *app* e assumindo que queremos incluir esse diretório porque existem outros arquivos com outros nomes diferentes. Nesse caso, podemos usar <F>*app* . Isso considerará apenas a parte do nome do arquivo quando o componente verificar as máscaras.
Essas propriedades depende da propriedade do USEMEMASK ativada.
Sorted: Boolean = se ativado, ele recuperará diretórios e arquivos classificados em ordem alfabética. (padrão false)
SubDir: Boolean = Se ativado, ele digitalizará arquivos em todos os subdiretos no caminho da pesquisa. (padrão true)
UseMask: Boolean = se ativado, considerará as propriedades Inclusions e Exclusions . Se desativado, ele recuperará sempre todos os arquivos. (padrão ativado).
IncludeHiddenFiles = Se ativado, ele incluirá arquivos e pastas ocultas (funciona apenas na plataforma Windows).
IncludeSystemFiles = Se ativado, ele incluirá arquivos e pastas do sistema (funciona apenas na plataforma Windows).
Quando você executa uma busca de diretório, o resultado será recuperado na propriedade ResultList , que contém objetos TDSResultItem . Você pode iterar esta lista para obter propriedades de resultados.
BaseDir = Caminho de diretório usado quando a pesquisa foi iniciada.
RelativeDir = Caminho do diretório sem prefixo de diretório de base.
Name = apenas o nome do arquivo.
Size = tamanho do arquivo em bytes.
Attributes = atributos de arquivo (o mesmo que a propriedade TSearchRec.attr).
Timestamp = Arquivo Última data e hora de gravação.
IsDir = se o item for um diretório (aparece apenas se a propriedade IncludeDirItem for verdadeira quando a pesquisa for executada).
Se você deseja obter apenas a lista de strings do caminho do arquivo, pode usar o método GetResultStrings :
procedure GetResultStrings (S: TStrings; Kind: TDSResultKind); Onde a propriedade Kind representa:
// Returns bytes in megabytes string format, with two decimal places.
function BytesToMB (X: Int64): string;
// Returns file size in bytes.
function GetFileSize ( const aFileName: string): Int64;
// Returns if an attribute enumerator contains a specific attribute (use System.SysUtils consts: faReadOnly, faHidden, faDirectory...)
function ContainsAttribute (AttributesEnum, Attribute : Integer): Boolean;