1. Pascal / Говнокод #14141

    +133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    function tform1.ExistsFiles(path:string):boolean;
    var
      hfile:thandle;
      fname:string;
      WD:win32_find_dataA;
    begin
      result:=false;
      if directoryexists(path)=false then
      exit;
      path:=includetrailingpathdelimiter(path);
      hfile:=FindFirstFile(pchar(path+'*.*'),wd);
      if hfile <> invalid_handle_value then
      begin
        repeat
          fname:=string(wd.cFileName);
          if (fname <> '.') and (fname <> '..') then
          begin
            if (wd.dwFileAttributes and file_attribute_directory <> 0) then
            begin
              if existsfiles(path+fname)=true then
              begin
              result:=true;
              break;
              end;
            end
            else
            if ansilowercase(extractfileext(fname))='.txt' then
            begin
              result:=true;
            break;
            end;
          end;
        until findnextfile(hfile,wd) <> true;
        windows.findclose(hfile);
      end;
    end;

    Проверяем, есть ли в папке и ее подпапках текстовые документы...

    Запостил: Stertor, 26 Ноября 2013

    Комментарии (1) RSS

    • показать все, что скрытоДолго удивлялся, почему эта рекурсивная хуйня не возвращает тру, пока наконец не понял, что
      if (wd.dwFileAttributes and file_attribute_directory <> 0) then
              begin
                if existsfiles(path+fname)=true then
                begin
                result:=true; // все, дальше нет смысла циклить, выходим...
                break; // если не выйти, результат, возможно, будет перезаписан фалсом..
                end;
              end
      Ответить

    Добавить комментарий