Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Raf-9600

Старожил


Сообщения: 398
Благодарности: 21

Профиль | Отправить PM | Цитировать


Есть код от El Sanchez на рекурсивный поиск всех файлов по маске. Ктонить может его переделать, чтобы найдя первый файл рекурсия тут же прекращалась и функция возвращала true?

Код: Выделить весь код
function FindFiles(Path, Mask: string; Recurse: BOOL): TArrayOfString;
var
  FindRecAll, FindRecMask: TFindRec;
begin
  if not DirExists(Path) then Exit;
    //
  if FindFirst(AddBackslash(RemoveBackslash(Path)) + Mask, FindRecMask) then
  try
    repeat
      if (FindRecMask.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0) then
      begin
        SetArrayLength(Result, GetArrayLength(Result) + 1);
        Result[GetArrayLength(Result) - 1] := AddBackslash(RemoveBackslash(Path)) + FindRecMask.Name;
      end;
    until not FindNext(FindRecMask);
  finally
    FindClose(FindRecMask);
  end;
    //
  if Recurse then
  begin
    if FindFirst(AddBackslash(RemoveBackslash(Path)) + '*', FindRecAll) then
    try
      repeat
        if (FindRecAll.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0) and (FindRecAll.Name <> '.') and (FindRecAll.Name <> '..') then
          Result := FindFiles(AddBackslash(RemoveBackslash(Path)) + FindRecAll.Name, Mask, Recurse);
      until not FindNext(FindRecAll);
    finally
      FindClose(FindRecAll);
    end;
  end;
end;

Отправлено: 14:58, 15-02-2016 | #1326