Robię program, który wymaga "przejechania" się po wnętrzu katalogu (wszystkie pliki we wszystkich podkatalogach). Przeczytałem to:
I teraz tak:
- jest tam napisane, że rekurencja ta nie uwzględnia "." (kropki - wyjścia w katalog wyżej). Skoro tak, to weźmy taką sytuację:
Katalog1
Katalog2
- Podkatalog1
- Podkatalog2
Katalog 3
Czy katalog 3 będzie uwzględiony... bo mi się wydaje, że nie..
- Pytanie odnośnie samej postaci rekurencji:
procedure costam(sciezka: string)
begin
// polecenia
costam(jakas sciezka)
// polecenia 2
end;
Procedura już w pierwszym egzemplarzu uruchmomienia przechodzi "sama do siebie" - ale czy "polecenia2" będą kiedykolwiek wykonane?
PS: W pierwszym myślniku mowa była o tej procedurze:
<delphi> procedure TMainForm.SearchDir(StartPath: String); var SR: TSearchRec; Found : Integer;function IsDir(Value : String) : String;
begin
if Value[Length(Value)] <> '\' then
Result := Value + '\' else Result := Value;
end;
begin
Found := FindFirst(IsDir(StartPath) + '.', faDirectory, SR);
while Found = 0 do
begin
Application.ProcessMessages;
if ((SR.Attr and faDirectory) = faDirectory) and
((SR.Name <> '.') and (SR.Name <> '..')) then
begin
ListBox1.Items.Add(IsDir(StartPath) + SR.Name);
SearchDir(IsDir(StartPath) + SR.Name); {<-- w tym miejscu następuje wywołanie
samej siebie }
end;
Found := FindNext(SR);
end;
FindClose(SR);
end;
<delphi>