Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2012-08-28 11:01:20 ЛС | профиль | цитата
Не нравится мне сия рекурсия (реальных ошибок пока не искал)


#pas
procedure THIFileSearch.Search;
var FindHandle:THandle;
begin
  FindHandle := FindFirstFile(PChar(Dir + '*.*'), FindData);
  if FindHandle=INVALID_HANDLE_VALUE then exit;
  repeat if (PChar(@FindData.cFileName[0]) <> '.')and(PChar(@FindData.cFileName[0]) <> '..') then
    if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY)<>0 then  begin
      if _prop_Include > 0 then OutFiles(Dir,FindData.cFileName);
      if _prop_SubDir = 0 then Search(Dir + FindData.cFileName + '\');  // Вот здесь и не нравится !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    end else if StrCmp(LowerCase(FindData.cFileName),FWorkExt) then begin
      inc(FCount);
      if _prop_Include <> 1 then OutFiles(Dir,FindData.cFileName);
    end else _hi_OnEvent(_event_onOtherFiles,Dir + FindData.cFileName);
  until FStop or not FindNextFile(FindHandle, FindData);
  FindClose(FindHandle);
end;

Но все равно - есть предложение подстраховаться (см. аттач)
карма: 9

0