Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > прогрэс бар для поиска |
Автор: Antony41 10.5.2009, 14:13 |
Всем привет! С прошедшим всех! Как нужно быть в такой ситуации. Есть заданный путь для поиска. например (C:\) Поиск включает в себя поддиректории, и маска может быть любой. (*.mp3 или *.*) Как создать прогрэс бар? Сначало произвести поиск всех файлов и потом, те файлы которые не входят в маску исключить и получившее значение будет Max для прогрэса как? |
Автор: Fhusy 10.5.2009, 14:37 |
а зачем тебе прогресс бар? и что он будет отображать? |
Автор: Antony41 10.5.2009, 14:40 |
начинаю поиск файлов с определённого места например с ('C:\*.*'), включая поддиректории Прогрэс должен показывать сколько осталось до окончания поиска |
Автор: Демо 10.5.2009, 16:11 |
А как ты определишь конкретное значение до окончания поиска? Тебе остаётся только лишь имитировать прогрессбар, показывая пользщователю, что программа не висит, а работает. |
Автор: Antony41 10.5.2009, 16:40 | ||||
решил проблему
|
Автор: Демо 10.5.2009, 23:37 |
Э-э... А где тут прогрессбар? |
Автор: kami 10.5.2009, 23:44 |
Точное время для этого действия оценить нельзя. Для показа работы, не имеющей конкретной продолжительности используют "бесконечный" ProgressBar, отображающий циклическое пробегание полоски слева направо. Обычно сверху полоски пишут, какое действие/файл находится на данный момент в обработке. В приведенном тобой коде, как я понял, работа по поиску файлов будет выполняться дважды. Первый раз - для получения max значения, а второй уже для визуального поиска. Нерационально. |
Автор: AntonN 11.5.2009, 00:45 | ||
Antony41,
т.е. ты отдаешь себе отчет, что ты только что два раза сделал поиск, сначала чтобы узнать кол-во файлов, а потом сделал такой же поиск, что бы понтово показать поиск с прогрессбаром? |
Автор: dumb 11.5.2009, 02:34 |
небольшим утешением может быть только то, что второй "проход" будет значительно быстрее за счет кэша. а в общем - конечно же, никто в таких случаях "точный" прогресс не показывает. |
Автор: Демо 11.5.2009, 14:13 |
Это вряд ли-) Я имею ввиду слово "значительно" |
Автор: dumb 11.5.2009, 21:32 |
полагаю, что порядок - это значительно. ![]() иногда приходится искать "иголку" по всем дискам - момент кэширования заметен сразу. Добавлено через 38 секунд edit: момент = эффект |
Автор: Демо 11.5.2009, 22:58 |
dumb, Согласен. В таком случае прогрессбар при повторном поиске вообще не имеет смысла. У меня на 200 тысячах файлов повторный проход занимает 6 секунд. |
Автор: Snowy 12.5.2009, 17:02 |
Данная операция не подвергается прогнозу, если только файлы не проиндексированы. Возможно в Windows 7 или далее будет доступ к файловой базе через SQL запросы. А пока файловая система - это непрогнозируемый киш-миш. Так что бери пример с микрософта и показывай анимированную собачку, вынюхивающую файлы. |
Автор: Antony41 12.5.2009, 21:27 |
Как же не используется ни где, могу привести, как пример, программы: Clone Remover, Alike File Finder, и др. Первый поиск передаёт результат в StringList, что выполняет его за 2-3 сек. А у второго совсем другая система. и результат он возвращает в listView. Но я с вами согласен лучше использовать полоску. Что то не догадался сразу |