Почти дописал небольшую фоновую утилитку сканирования файлов по выбранным маскам для некоторых последующих действий. В конце-концов решил додумать список исключений для опред. файлов и папок. Сама задача проблем не составила, но вот как дать понять следующей фукнции, что я хочу проигнорировать в заданном каталоге содержащиеся в ней файлы, но при этом продолжить обработку ее поддиректорий ? Пробовал решать задачу по разному... Несовсем понятно, как себя ведет рекурс. ссылка
scanproj(prdr+src.name+'\',workfs,ldr); в найденном подкаталоге. Продолжается ли работа функции после выхода и нового цикла сразу же после точки останова ? Логически, вроде бы представляется, что - да... (**) помечены мои безуспешные модификации

Может есть у кого рабочая версия подобной или похожей функции...
Код:
procedure scanproj(prdr : string; workfs : boolean = false; ldr : string = ''); {ls: tstringlist}
label 1;
var SRC : TSearchrec;
ff,lv,lc,ids : integer; brk:boolean;
begin
prdr:= includetrailingbackslash(prdr);
with nfor_main do
if directoryexists(prdr) then begin
brk:= false;
lv:= 0;
lc:= 0;
ff:= 0;
try
if findfirst(PrDr+'*.*',faAnyFile,SRC) = 0 then
repeat
inc(LC);
if (SRC.Name <> '.') and (src.Name <> '..') then
if ((SRC.Attr and faDirectory) <> 0) then
begin
(**)
if not workfs then
begin
ldr:= prdr+src.name;
{проверка на вхождение в список исключ.}
workfs:= (ltm.indexof('+'+ldr+'\')<>-1);
end;
(**)
scanproj(prdr+src.name+'\',workfs,ldr); inc(lv); //end else brk:= true;
end
else
if not ((SRC.Attr and faVolumeID) <> 0) then
begin
(**)
if workfs then inc(ff) else
if ltm.indexof('+'+prdr+src.name)=-1 then
if HaveBadExt(SRC.Name)then
begin
case cl.itemindex of
0: deletefilewithundo(prdr+src.name,true);
1: deletefilewithundo(prdr+src.name,false);
2:
if not directoryexists(moved.text) then begin tr2.enabled := false; goto 1 end else
if copyfile(pchar(prdr+src.name),pchar(includetrailingbackslash(moved.text)+src.name),false) then
deletefilewithundo(prdr+src.name);
end;
end;
end;
{здесь должно бы проверяться условие на соотвествие номера последнего обработанного файла отдельной функции возвращающей все найденные в папке ldr файлы (т.е.-количество)}
(**) workfs := not(ff=foundfiles_count(extractfilepath(ldr)+'*',faanyfile));
if not workfs then begin ff:=0; ldr:='' end;
{
1:
if not tr2.enabled then begin showmessage('!process stopped'); proc.caption:= '- остановлено.. ) alt + shift + f12 для отмены из вне('; break; end;
if (LC mod 10) = 0 then
begin
application.ProcessMessages;
end;
}
until findnext(SRC) <> 0;
finally
FindClose(SRC);
end;
end;
end;
Спасибо.