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>