Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 12:22   #1
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию Отображение информации при поиске файлов

Добрый день! нужна помощь. Есть процедура которая ищет файлы по маске. как в этой процедуре реализовать процесс поиска ProgressBar?

Вот процедура:

Код:
procedure FindFiles(StartFolder, Mask: String; ListView: TListView;
  ScanSubFolders: Boolean);
var
SearchRec: TSearchRec;
FindResult: Integer;
LV: TListItem;
begin
  ListView.Items.BeginUpdate;
  try
  StartFolder := IncludeTrailingBackslash(StartFolder);
  FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec);
    try
    while FindResult = 0 do
    with SearchRec do
      begin
      if (Attr and faDirectory) <> 0 then
        begin
        if ScanSubFolders and (Name <> '.') and (Name <> '..') then
          begin
          Inc(countfolders);
          FindFiles(StartFolder + Name, Mask, ListView, ScanSubFolders);
          end;
        end
        else
        begin
        if MatchesMask(Name, Mask) then
          begin
          Application.ProcessMessages;
          Inc(countfiles1);
          ListView.Items.Add.Caption := Name;
          end;
        end;
          form1.Edit3.Text:='Folders  '+inttostr(countfolders);
          form1.Edit4.Text:='Files  '+inttostr(countfiles1);
          form1.Edit5.Text:= 'Scan Dir  '+StartFolder;
      FindResult := FindNext(SearchRec);
      end;
    finally
    FindClose(SearchRec);
    end;
  finally
  ListView.Items.EndUpdate;
  end;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
//Вызов процедуры
FindFiles('C:\','*',ListView1, true);
end;

Последний раз редактировалось Аватар; 24.12.2015 в 12:28.
botan32 вне форума Ответить с цитированием
Старый 24.12.2015, 12:37   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Только фейковый прогрессбар или какую-нибудь анимацию
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.12.2015, 12:37   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Боюсь что никак, ибо заранее не известно сколько поиск пройдет файлов.
Максимум выводить в Лейбу число пройденного...
Или если прогрессить - просто через каждые 10-100 файлов сдвигать его свойство Max на очередные 10-100, но это гемор.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2015, 12:49   #4
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию

А можно ли тогда вывести оставшееся время до завершения поиска? Если да, то каким образом? Просто необходима хоть какая-то информация. А то поиск уходит в некуда, неизвестно сколько на него затрачено.
botan32 вне форума Ответить с цитированием
Старый 24.12.2015, 12:52   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
оставшееся время до завершения поиска
Если бы оно было известно, то какие проблемы с прогрессбаром?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.12.2015, 13:00   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Можно сделать через одно место. Заранее узнать размер папки со всеми файлами, в которой будет производиться поиск, далее при поиске в прогрессе показывать общий размер минус размер всех файлов прошедших через процедуру поиска.
Но это же лишнее время. будет оправдано только в том случае если файлов не много и уж если очень хочется сделать визуализацию.
FaTaL вне форума Ответить с цитированием
Старый 24.12.2015, 13:04   #7
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Заранее узнать размер папки со всеми файлами
для этого надо сделать тот же поиск.
come-on вне форума Ответить с цитированием
Старый 24.12.2015, 13:18   #8
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию

Узнать заранее размер папки, это не вариант. А если поиск будет осуществляться не в папке а на диске.... Программа просто будет висеть. Странно, но в других же прогах это как то реализовано.
botan32 вне форума Ответить с цитированием
Старый 24.12.2015, 13:20   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Странно, но в других же прогах это как то реализовано
В каких других? И картинку как реализовано
Цитата:
Программа просто будет висеть.
Для этого есть Application.ProcessMessages или потоки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 24.12.2015 в 13:22.
Аватар вне форума Ответить с цитированием
Старый 24.12.2015, 13:29   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от botan32 Посмотреть сообщение
в других же прогах это как то реализовано.
В Тотал Командере, например, в строку статуса выводится имя каталога, в котором в данный момент ведется поиск.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
папка по умолчанию при поиске файлов vova_ Windows 2 20.01.2013 14:45
Вывод не нужного при поиске файлов coNsept Общие вопросы C/C++ 5 28.04.2010 19:11
I/O error 123 при поиске файлов [MoNAMur] Общие вопросы Delphi 2 19.01.2010 15:15
Требуется помощь в поиске информации 5naip Свободное общение 2 21.05.2009 04:54
Отображение скрытых файлов и папок и отображение розширения всех файлов beegl Общие вопросы Delphi 10 14.12.2008 22:02