Ĺadny brzuch
Aby w Delphi wyszukać pliki określonego typu w danej lokalizacji robi się to np. tak:
Znaleziono := FindFirst('C:*.*', faAnyFile, Plik);
while(Znaleziono = 0) do
begin
ListBox1.Items.Add('C:Windows' + Plik.Name);
Znaleziono := FindNext(Plik);
end;
Oczywiście najpierw trzeba jeszce zadeklarować zmienne, tylko że przy pomocy tego kody wyszukiwane są pliku w podanym katalogu, w tym przypadku to będzie 'C:Windows', a nie zostana znalezione pliki które są w podkatalogach będączych w przeszukiwanym folderze.
Chodzi mi o to jak zrobić aby wyszukiwarka zagłębiała się w głąb przeszukiwanego katalogu, a nie szukała bezpośrednio w nim.
Czy jest na to jakaś prosta zwykła funkcja, czy trzeba to zrobić poprostu tak, przy pomocy różnuch pętelek, że jak znaleziony zostanie podfolder to zostanie on przeszukany, a jak w tym podfolderze jeszce będą inne foldery to też zostaną przeszukane i tak dalej, a potem program wruci tam gdzie zaczoł i jak znowu znajdzi folder to go zacznie przeszukiwać.
Spróbuj to przeanalizować, nie wiem czy znajdziesz tu to czego szukasz ale to jest kawałek kodu z programu do wyszukiwania plików z możliwością wyszukiwania w folderach, ja tego kodu nie pisałem ściągnąłem go z jakiegoś portalu o Delphi :
procedure TfrMain.FileSearch(const PathName, FileName : string; const InDir : boolean);
var Rec : TSearchRec;
Path : string;
begin
Path := IncludeTrailingBackslash(PathName);
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
try
repeat
ListBox1.Items.Add(Path + Rec.Name);
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
If not InDir then Exit;
if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
try
repeat
if (Rec.Attr in [faDirectory]) and (Rec.Name<>'.') and (Rec.Name<>'..') then
FileSearch(Path + Rec.Name, FileName, True);
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
end; //procedure FileSearch
hej ja mam ten sam problem jezeli masz jakies dane na ten temat to bardzo bym ciebie prosil bays wyslal mi maila moj adres to :
fircyk1@tlen.pl
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Znaleziono := FindFirst('C:*.*', faAnyFile, Plik);
while(Znaleziono = 0) do
begin
ListBox1.Items.Add('C:Windows' + Plik.Name);
Znaleziono := FindNext(Plik);
end;
Oczywiście najpierw trzeba jeszce zadeklarować zmienne, tylko że przy pomocy tego kody wyszukiwane są pliku w podanym katalogu, w tym przypadku to będzie 'C:Windows', a nie zostana znalezione pliki które są w podkatalogach będączych w przeszukiwanym folderze.
Chodzi mi o to jak zrobić aby wyszukiwarka zagłębiała się w głąb przeszukiwanego katalogu, a nie szukała bezpośrednio w nim.
Czy jest na to jakaś prosta zwykła funkcja, czy trzeba to zrobić poprostu tak, przy pomocy różnuch pętelek, że jak znaleziony zostanie podfolder to zostanie on przeszukany, a jak w tym podfolderze jeszce będą inne foldery to też zostaną przeszukane i tak dalej, a potem program wruci tam gdzie zaczoł i jak znowu znajdzi folder to go zacznie przeszukiwać.
Spróbuj to przeanalizować, nie wiem czy znajdziesz tu to czego szukasz ale to jest kawałek kodu z programu do wyszukiwania plików z możliwością wyszukiwania w folderach, ja tego kodu nie pisałem ściągnąłem go z jakiegoś portalu o Delphi :
procedure TfrMain.FileSearch(const PathName, FileName : string; const InDir : boolean);
var Rec : TSearchRec;
Path : string;
begin
Path := IncludeTrailingBackslash(PathName);
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
try
repeat
ListBox1.Items.Add(Path + Rec.Name);
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
If not InDir then Exit;
if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
try
repeat
if (Rec.Attr in [faDirectory]) and (Rec.Name<>'.') and (Rec.Name<>'..') then
FileSearch(Path + Rec.Name, FileName, True);
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
end; //procedure FileSearch
hej ja mam ten sam problem jezeli masz jakies dane na ten temat to bardzo bym ciebie prosil bays wyslal mi maila moj adres to :
fircyk1@tlen.pl