FinfFirst, FindNext per cercare più estensioni
  Home FAQ Contact Sign in
it.comp.lang.delphi only
 
Advanced search
POPULAR GROUPS

more...

it.comp.lang.delphi Profile…
 Up
FinfFirst, FindNext per cercare più estensioni         


Date: Jul 16, 2008 23:22

Ciao a tutti,
supponiamo di dover fare una ricerca con FindFirst e FindNext di tutti i
files che hanno almeno una delle seguenti estensioni:
*.aaa
*.bbb
*.ccc
e che tale ricerca vada fatta su tutte le directories del disco. E'
possibile dire a FindFirst di cercare tutti i files che soddisfano almeno
una delle estensioni?
Ad oggi faccio una ricerca con *.* e poi verifico io che l'estensione ricada
tra una di quelle.

Grazie in anticipo, Mario

--------------------------------
Inviato via http://arianna.libero.it/usenet/
10 Comments
Re: FinfFirst, FindNext per cercare più estensioni         


Author: Jax
Date: Jul 16, 2008 23:44

MBulu ha scritto:
> Ad oggi faccio una ricerca con *.* e poi verifico io che l'estensione ricada
> tra una di quelle.

Anch'io me lo sono sempre chiesto, ma non ho mai approfondito.
Guardando i sorgenti, FindFirst si basa si una API (FindFirstFile), ed è
questa API che non prevede il passaggio di più estensioni.
Neanche la FindFirstFileEx lo prevede, quindi l'unica soluzione
alternativa, così sui due piedi, potrebbe essere farsi una procedura
generica a cui viene passata l'estensione, che verrà richiamata per ogni
estensione ricercata.
Bisognerebbe fare delle prove per vedere se e in quali condizioni questa
soluzione sia più veloce della ricerca *.*

--
Jax
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Date: Jul 17, 2008 00:00

Il 17 Lug 2008, 08:44, Jax ha scritto:
> Neanche la FindFirstFileEx lo prevede, quindi l'unica soluzione
> alternativa, così sui due piedi, potrebbe essere farsi una procedura
> generica a cui viene passata l'estensione, che verrà richiamata per ogni
> estensione ricercata.
> Bisognerebbe fare delle prove per vedere se e in quali condizioni questa
> soluzione sia più veloce della ricerca *.*

Ci avevo pensato anch'io, ma ho notato che se la ricerca viene fatta
partendo per esempio da C:\, alla fine conviene cercare *.* e poi fare un
filtro sulla lista dei risultati. Nel primo caso infatti in disco viene
letto una volta sola, nell'altro caso verrebbe riletto più volte in baso al
n° di estensioni da trovare e le operazioni fatte in memoria sono più veloci
di quelle fatte su disco.
Almeno questo nel mio programma in cui posso arrivare a cercare fino a 10
estensioni differenti.

Ciao e grazie ancora, Mario.

--------------------------------
Inviato via http://arianna.libero.it/usenet/
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Author: ACSH
Date: Jul 17, 2008 03:33

MBulu ha scritto:
> Ci avevo pensato anch'io, ma ho notato che se la ricerca viene fatta
> partendo per esempio da C:, alla fine conviene cercare *.* e poi fare un
> filtro sulla lista dei risultati. Nel primo caso infatti in disco viene
> letto una volta sola, nell'altro caso verrebbe riletto più volte in baso al
> n° di estensioni da trovare e le operazioni fatte in memoria sono più veloci
> di quelle fatte su disco.
> Almeno questo nel mio programma in cui posso arrivare a cercare fino a 10
> estensioni differenti.

Se stai usando Lazarus, quindi programmando in un ottica multipiattaforma,
non devi dare per scontato questo fatto.
Ma, visto che parli di "estensione", direi che ti limiti a Windows, e
quindi tutto quello che avete detto è valido e corretto. In tal caso,
potresti dere un occhio alla funzione AdvBuildFileList nelle libreria
Jedi, che dovrebbe fare proprio quello di qui hai bisogno.

Ciao

ACSH

--
Show full article (1.07Kb)
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Date: Jul 17, 2008 23:22

Il 17 Lug 2008, 12:33, AWSDERTY@TURUR.XXE (ACSH) ha scritto:
> Se stai usando Lazarus, quindi programmando in un ottica multipiattaforma,
> non devi dare per scontato questo fatto.
> Ma, visto che parli di "estensione", direi che ti limiti a Windows, e
> quindi tutto quello che avete detto è valido e corretto. In tal caso,
> potresti dere un occhio alla funzione AdvBuildFileList nelle libreria
> Jedi, che dovrebbe fare proprio quello di qui hai bisogno.

In effetti lo faccio con Lazarus ed il programma è compilato anche in Linux.
Nel mio caso vado alla ricerca di files PDF e di OpenOffice (ODS, ODT, ecc)
in ogni caso ho previsto che l'utente possa inserire un filtro e, se vuole,
la ricerca viene fatta anche senza estensioni !!!
Show full article (1.60Kb)
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Author: Microges
Date: Jul 17, 2008 23:34

Scusa ma usare un Thread?
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Date: Jul 17, 2008 23:44

Il 18 Lug 2008, 08:34, Microges ha scritto:
> Scusa ma usare un Thread?
>

Non li ho mai usati !!!
In quel caso cosa cambia? L'applicativo non sembra ugualmente bloccato?

Ciao, Mario

--------------------------------
Inviato via http://arianna.libero.it/usenet/
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Author: Microges
Date: Jul 18, 2008 02:04

> Non li ho mai usati !!!

Be questo non e' un problema, in giro vi sono una miriade di esempi dai
piu' semplici ai piu' complessi
> In quel caso cosa cambia? L'applicativo non sembra ugualmente bloccato?

No. Un thread e' un processo parallelo al tuo. Un po' come se avvii due
programmi simultaneamente - se uno e' bloccato, l'altro non lo e' -
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Author: Giorgio Padoan
Date: Jul 18, 2008 03:07

"MBulu" ha scritto nel messaggio
news:62Z108Z225Z151Y1216362253X12356@usenet.libero.it...
> Il 17 Lug 2008, 12:33, AWSDERTY@TURUR.XXE (ACSH) ha scritto:
>> Se stai usando Lazarus, quindi programmando in un ottica
>> multipiattaforma,
>> non devi dare per scontato questo fatto.
>> Ma, visto che parli di "estensione", direi che ti limiti a Windows, e
>> quindi tutto quello che avete detto è valido e corretto. In tal caso,
>> potresti dere un occhio alla funzione AdvBuildFileList nelle libreria
>> Jedi, che dovrebbe fare proprio quello di qui hai bisogno.
>
> In effetti lo faccio con Lazarus ed il programma è compilato anche in
> Linux.
> Nel mio caso vado alla ricerca di files PDF e di OpenOffice (ODS, ODT,
> ecc)
> in ogni caso ho previsto che l'utente possa inserire un filtro e, se
> vuole,
> la ricerca viene fatta anche senza estensioni !!!
>
> Mi attacco a questo thread per chiedere un consiglio: dovendo cercare i ...
Show full article (1.90Kb)
no comments
Re: FinfFirst, FindNext per cercare più estensioni         


Author: Andrea Laforgia
Date: Jul 18, 2008 11:23

On Fri, 18 Jul 2008 06:22:46 GMT, ci...@ciao.it (MBulu) wrote:
>Mi attacco a questo thread per chiedere un consiglio: dovendo cercare i
>files potenzialmente su tutto il disco, faccio una ricerca con i classici
>FindFirst, FindNext e FindClose in una procedura ricorsiva. Durante
>l'esecuzione, sorge il problema dell'applicativo che sembra in loop.

Crea un thread a cui fai eseguire tutta l'operazione di ricerca.
Thread che dovrà comunicare con la main form o chi di dovere mediante
messaggi (o tecnica equivalente) i risultati che trova di volta in
volta. Non è complicato farlo.
no comments
1 2