PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 24 → Como fazer busca recursiva de um diretório ou arquivo?
Como fazer busca recursiva de um diretório ou arquivo?
Iniciado por Bruno Ráfaga, dez., 28 2019 2:02 PM - 3 respostas
Publicado em dezembro, 28 2019 - 2:02 PM
Olá pessoal, estou precisando de ajuda pra criar uma função que não encontrei no WinDev e ao meu ver é tão básica que deveria ser embutida.

Eis o problema:
Preciso encontrar um diretório(ou arquivo) específico cujo caminho pode variar, o nome da pasta (ou do arquivo) é fixo e único, mas o diretório que ele se encontra pode variar e estar dentro de subpastas. Não tenho idéia de como buscar o caminho completo para esta pasta (ou arquivo) pelo WinDev.

Exemplo:
Digamos que eu queira encontrar o arquivo 'Tapioca.abc'. E no meu computador ele se encontra no diretório:

D:\Minhas Coisas\Lanchonetes\Ponto da Tapioca\Lanches\Tapioca.abc

mas no computador de outras pessoas ele pode estar em

C:\Coisas pra Comer\Tapioca.abc

Como faço pra criar uma busca que encontre esse arquivo independente do caminho que preciso chegar até ele?

Já temtei usar o fDir com Wildcard *, mas o * não funciona em caminhos.
Já tentei usar o fListFile, mas novamente encontro o problema de Wildcard *
Testei de todas as maneiras abaixo com as duas funções e não tive nenhum retorno:
C:\*\Tapioca.abc
*\Tapioca.abc


Empaquei completamente, alguém sabe como resolver?
Membro registado
318 mensagems
Publicado em dezembro, 30 2019 - 3:42 PM
Hola prueba con fListfile https://ayuda.windev.es/es-ES/…

Te devuelve un listado de los ficheros existentes en una carpeta y permite indicar que quieres que la busqueda sea recursiva.

Rubén
Publicado em janeiro, 02 2020 - 5:26 AM
Bruno Ráfaga escreveu:
Olá pessoal, estou precisando de ajuda pra criar uma função que não encontrei no WinDev e ao meu ver é tão básica que deveria ser embutida.

Eis o problema:
Preciso encontrar um diretório(ou arquivo) específico cujo caminho pode variar, o nome da pasta (ou do arquivo) é fixo e único, mas o diretório que ele se encontra pode variar e estar dentro de subpastas. Não tenho idéia de como buscar o caminho completo para esta pasta (ou arquivo) pelo WinDev.

Exemplo:
Digamos que eu queira encontrar o arquivo 'Tapioca.abc'. E no meu computador ele se encontra no diretório:

D:\Minhas Coisas\Lanchonetes\Ponto da Tapioca\Lanches\Tapioca.abc

mas no computador de outras pessoas ele pode estar em

C:\Coisas pra Comer\Tapioca.abc

Como faço pra criar uma busca que encontre esse arquivo independente do caminho que preciso chegar até ele?

Já temtei usar o fDir com Wildcard *, mas o * não funciona em caminhos.
Já tentei usar o fListFile, mas novamente encontro o problema de Wildcard *
Testei de todas as maneiras abaixo com as duas funções e não tive nenhum retorno:
C:\*\Tapioca.abc
*\Tapioca.abc


Empaquei completamente, alguém sabe como resolver?


Eu pedi para o pessoal do WxDev Fórum responder este tópico: https://wxdev.com.br/forum/index.php…
Publicado em janeiro, 02 2020 - 7:31 PM
Bruno Ráfaga escreveu:
Olá pessoal, estou precisando de ajuda pra criar uma função que não encontrei no WinDev e ao meu ver é tão básica que deveria ser embutida.

Eis o problema:
Preciso encontrar um diretório(ou arquivo) específico cujo caminho pode variar, o nome da pasta (ou do arquivo) é fixo e único, mas o diretório que ele se encontra pode variar e estar dentro de subpastas. Não tenho idéia de como buscar o caminho completo para esta pasta (ou arquivo) pelo WinDev.

Exemplo:
Digamos que eu queira encontrar o arquivo 'Tapioca.abc'. E no meu computador ele se encontra no diretório:

D:\Minhas Coisas\Lanchonetes\Ponto da Tapioca\Lanches\Tapioca.abc

mas no computador de outras pessoas ele pode estar em

C:\Coisas pra Comer\Tapioca.abc

Como faço pra criar uma busca que encontre esse arquivo independente do caminho que preciso chegar até ele?

Já temtei usar o fDir com Wildcard *, mas o * não funciona em caminhos.
Já tentei usar o fListFile, mas novamente encontro o problema de Wildcard *
Testei de todas as maneiras abaixo com as duas funções e não tive nenhum retorno:
C:\*\Tapioca.abc
*\Tapioca.abc


Empaquei completamente, alguém sabe como resolver?


Bruno Ráfaga,

O Janio Aguiar, um dos moderadores do WxDev Fórum respondeu este tópico dizendo:

"Ha coisas que são meio lógicas e existe razão de existirem (ou não). Ja pensou um "comando" pra procurar no disco C inteiro um arquivo? Meio sem sentido, no meu entender.
A premissa básica de quando se quer manipular um arquivo é saber onde ele está. Eu faria o seguinte:

- Testo se o arquivo existe na pasta padrão.

- Tem? bola pra frente

- Não tem? Abro uma janela (com fSelectDir()) pra o usuário informar onde está esse bendito arquivo

- Usuário informando o path do arquivo, guardo esse path em algum lugar. Feito"

Referência: https://wxdev.com.br/forum/index.php…

O nathanreys respondeu este tópico dizendo:

"Um buscar em um disco inteiro levaria um tempo bem considerável, eu também partiria da premissa do @Janio Aguiar, onde teria pelo menos um diretório base para diminuir esse range, mas acredito que utilizando a função fListFile você consegue realizar esse tratamento de busca a partir do diretório raiz do disco (https://doc.windev.com/en-US/…)

Essa função prevê uma chamada callback padrão para cada arquivo encontrado
Acredito que seja esse o caminho caso queira realizar tal procedimento"

Referência: https://wxdev.com.br/forum/index.php…

Bruno Ráfaga,

Essas respostas que foram colocadas no WxDev Fórum respondem este seu tópico?