1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Как быстро узнать если у папки вложенные подпапки?

Тема в разделе "Delphi - программирование", создана пользователем Barmutik, 10 фев 2005.

Статус темы:
Закрыта.
  1. Barmutik

    Barmutik Гость

    Репутация:
    0
    Важное слово "быстро"...

    Почему встал вопрос ... если есть каталог и в нём 50.000 файлов и 1 папка, то процесс узнавания есть ли эта подпапка может занять ОЧЕНЬ много времени...

    Как можно быстрее узнать?
     
  2. zubr

    zubr Гость

    Репутация:
    0
    А функция FindFirst с Attr=faDirectory не помогает?
     
  3. Barmutik

    Barmutik Гость

    Репутация:
    0
    Неа ... не помогает .. если посмотреть как она реализована и почитать MSDN ... то легко заметить что эта функция практически плюёт с высокой колокольни на этот атрибут :angry: И возвращает она файлы в алфавитном порядке . и если файлов 50.000 скажем с цифровыми именами а подпапка с именем на буквы .. но ждать пока она найдёт подпапку будем очень долго :( ... а надо быстро ...
     
  4. zubr

    zubr Гость

    Репутация:
    0
    Вот только что попробовал, правда в C++Builder (на работе Delphi не стоит) - определяет только каталоги.
    Код:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TSearchRec f;
    AnsiString s;
    if (!FindFirst("c:\\*.", faDirectory, f))
    {
      s=f.Name;
      while (!FindNext(f))
      {
       s=f.Name;
      }
    
    }
    }
    Получилось, когда параметр Patch сделал 'путь к каталогу\*.'
     
  5. Barmutik

    Barmutik Гость

    Репутация:
    0
    Супер!!!! Сенкс!!! Магическая комбинация *. !!!!

    Я пробовал *.* млм просто * ... и без шансов ... а вот именно в такой комбинации ... всё просто супер ... в 100 раз быстрее ...

    Правда есть малость ограничение .. также находит файлы без расширения .. но это мелочь вообщем ...!!!

    Спасибо реально большое!! :angry: :(
     
  6. zubr

    zubr Гость

    Репутация:
    0
    Рад был помочь :angry:
     
  7. Barmutik

    Barmutik Гость

    Репутация:
    0
    Только вот нашлась побочная штука этого метода :)

    Если каталог имеет в своём имени точку то данный вариант не работает ;) Оне не находит такие каталоги ;)

    Может ещё какие варианты есть ?
     
  8. zubr

    zubr Гость

    Репутация:
    0
    Хм... Надо подумать.
     
  9. zubr

    zubr Гость

    Репутация:
    0
    Не знаю... Похоже остается только на низком уровне решать данную проблему - делать что то типа драйвера, по крайней мере получить доступ к файловой таблице.
     
  10. Barmutik

    Barmutik Гость

    Репутация:
    0
    :) Вот и я не знаю ... пробовал FindFirstEx.. тоже не помогает ... так это вроде и есть обращение сразу к дисковой системе...
     
  11. zubr

    zubr Гость

    Репутация:
    0
    FindFirstFileEx я тоже пробовал, похоже Fat32 не поддерживает фильтр FindExSearchLimitToDirectories
     
Загрузка...
Похожие Темы - Как быстро узнать
  1. Дайнеко
    Ответов:
    14
    Просмотров:
    3.199
  2. grayuser
    Ответов:
    4
    Просмотров:
    60
  3. mustwanted
    Ответов:
    17
    Просмотров:
    157
  4. PingVinich
    Ответов:
    3
    Просмотров:
    108
  5. Shandrik
    Ответов:
    18
    Просмотров:
    151
Статус темы:
Закрыта.

Поделиться этой страницей