Да все просто: Файловая система представляется как дерево с кучий ветвей и путей, для полного обхода дерева каталогов и файлов в них необходимо либо знать их количество либо использовать рекурсию
| Код | //==================Поиск файлов============== procedure GetFile(Dir: string; ras: string); var f : TSearchRec; i : integer; s, key : string; begin i := FindFirst(Dir+ras, faAnyFile, f); while (i=0) do begin s := Dir+f.Name; i := FindNext(f); Application.ProcessMessages; end; FindClose(f); end;
//==================Поиск дирикторий============== procedure GetDir(Dir: string); var f : TSearchRec; i : integer; JPGFlag: Boolean; begin i := FindFirst(Dir+'*.*', faDirectory, f); GetFile(Dir, '*.BMP') while (i=0) do begin if (f.Name='.') or (f.Name='..') then else begin if (f.Attr and faDirectory)<>0 then begin GetDir(Dir+f.Name+'\'); Application.ProcessMessages; end else begin i := FindNext(f); end; end; i := FindNext(f); Application.ProcessMessages; end; FindClose(f); end;
|
Рекурсия это когда функция вызывает саму себя или свой кусок. В этом примере две функции вызывают друг друга рекурсивно. |