Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Rekurzivna pretraga

[es] :: Pascal / Delphi / Kylix :: Rekurzivna pretraga

[ Pregleda: 3114 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Rekurzivna pretraga26.06.2004. u 18:32 - pre 241 meseci
Treba mi sto brzi i manji algoritam za rekurzivnu pretragu fajlova na hard disku (ukljucujuci i subdirektorijume). Trazio sam po internetu, nasao sam samo neke komponente za pretrazivanje, btw meni treba (skup) procedura/funkcija koji ce, recimo da zapisu sve putanje do fajlova u jedan fajl.

Poz, Marko.
 
Odgovor na temu

hwfanatic
Branko Grbac
Beograd

Član broj: 91
Poruke: 171
*.ppp-bg.sezampro.yu



Profil

icon Re: Rekurzivna pretraga26.06.2004. u 21:06 - pre 241 meseci
Evo ja znam kako to da se odradi koristeći Windows-ov API, ako ti to nešto znači. Mada, to je ujedno i najsporija metoda...
Yea, and from this day forth, a surface must be locked before beast or man can draw upon it!
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
*.vdial.verat.net

Sajt: www.diy-fever.com


+1 Profil

icon Re: Rekurzivna pretraga28.06.2004. u 00:47 - pre 241 meseci
evo ovako:
Code:

var
  FindResult: integer;
  SearchRec : TSearchRec;
begin
...
  FindResult := FindFirst(Path + '*.*', faAnyFile - faDirectory, SearchRec);
  while FindResult = 0 do
   begin
     //radis nesto sa fajlom SearchRec.Name
     FindResult := FindNext(SearchRec);
   end;
...
end;

promeni ono *.* u masku fajla koji trazis, path ti je ime direktorijuma.
i ako mene pitas, ovo je sasvim zadovoljavajuce brzine.
pozdrav
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

hwfanatic
Branko Grbac
Beograd

Član broj: 91
Poruke: 171
*.ppp-bg.sezampro.yu



Profil

icon Re: Rekurzivna pretraga28.06.2004. u 08:55 - pre 241 meseci
Ne bi bilo loše da sve to staviš u try..finally klauzulu za slučaj neke neočekivane greške. Treba još dodati i SysUtils.FindClose(SearchRec); inače rizikuješ da handle bar jedne datoteke ostane zauzet.
Yea, and from this day forth, a surface must be locked before beast or man can draw upon it!
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Rekurzivna pretraga28.06.2004. u 12:54 - pre 241 meseci
Hvala na odgovorima, preradio sam onu proceduru koju mi je bancika dao :

Code:

procedure FindFiles(const Path, FileExt : String);
var
  SearchRec : TSearchRec;
begin
  If FindFirst(Path + FileExt, faAnyFile - faDirectory, SearchRec) = 0 Then
    repeat
      // Pronadjen fajl koji zadovoljava kriterijme (putanja = Path + SearchRec.Name)
    until FindNext(SearchRec) <> 0;

  If FindFirst(Path + '*.*', faDirectory, SearchRec) = 0 Then
    repeat
      If (SearchRec.Attr and faDirectory <> 0) and
         (SearchRec.Name <> '.') and
         (SearchRec.Name <> '..') Then
        FindFiles(Path + SearchRec.Name + '\', FileExt);
    until FindNext(SearchRec) <> 0;

  FindClose(SearchRec);
end;


Poz, Marko.

 
Odgovor na temu

hwfanatic
Branko Grbac
Beograd

Član broj: 91
Poruke: 171
*.beotel.net



Profil

icon Re: Rekurzivna pretraga28.06.2004. u 13:16 - pre 241 meseci
Pazi samo da ti taj FindClose ne uzme iz Windows unit-a, jer to nije isto. Za svaki slučaj naznači da je iz unit-a SysUtils (negde gore sam napisao i kako).
Yea, and from this day forth, a surface must be locked before beast or man can draw upon it!
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Rekurzivna pretraga28.06.2004. u 13:36 - pre 241 meseci
Ne moze da pozove Windows.FindClose nikako, zato sto se ona poziva sa nekim parametrom tipa Cardinal, dok se SysUtils.FindClose poziva sa parametrom tipa TSearchRec.

Poz, Marko.
 
Odgovor na temu

hwfanatic
Branko Grbac
Beograd

Član broj: 91
Poruke: 171
*.beotel.net



Profil

icon Re: Rekurzivna pretraga28.06.2004. u 14:48 - pre 241 meseci
Može, može... Ne bih ti ja to bez veze govorio. Meni je zbog toga pravio problem. Čisto da znaš, pa ako tebi radi ok i bez toga - super.
Yea, and from this day forth, a surface must be locked before beast or man can draw upon it!
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Rekurzivna pretraga

[ Pregleda: 3114 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.