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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2018, 09:00   #1
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию испльзование progressbar

Доброе утро! подскажите, как использовать progressbar, когда происходит поиск файла (в процессе поиска идет загрузка progressbar).
Etsareva вне форума Ответить с цитированием
Старый 26.06.2018, 09:48   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Что такое поиск файла? Код
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.06.2018, 09:49   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

ты всегда знаешь сколько файлов ты УЖЕ просмотрел(-a)(можешь вести их подсчет) и соответственно можешь указать текущую позицию в ProgressBar, а вот знаешь ли ты сколько файлов всего тебе надо было бы просмотреть (можешь ли узнать это НЕ прибегая к их(файлов) реальному просмотру).
К сожалению такое знание недоступно, так что КОНЕЧНУЮ позицию в ProgressBar можно задать только эмпирически(на основе уж не знаю каких данных, но которых точно нет в комьютере, а есть только в твоей голове). И постоянно следить за тем чтобы текущая позиция не превысила конечную, т.е. корректировать конечную так чтобы все было "красиво".

Т.е. реальной информации от(для) такого ProgressBar не получить, если конечно не составить заранее список файлов для поиска и использовать в ProgressBar его текущую позицию и размер(число файлов).

P.S. стандартный ProgressBar использованный на "каждый чих"(каждый файл) замедлит выполнение(и без того медленное, иначе не было бы вопроса о ProgressBar) В НЕСКОЛЬКО раз.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.06.2018, 09:57   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

это несложно. но только в том случае, когда Вам заранее известно количество обрабатываемых файлов. Насколько я помню, у Вас же рекурсивный поиск по каталогам. Сколько файлов в каталоге - заранее неизвестно.
Поэтому использовать прогрессбар в данном случае не очень эффективно.
Бороться с тем, что пользователь ничего не видит можно так:
- просто выводить песочные часы вместо курсора, которые крутятся, пока идёт поиск (как вариант - есть панелька с бегущей полоской или вращающиеся колёсики или прочая лабудень - цель которой - отвлечь и развлечь оператора программы.
или
выводить на информационную панель (или в отдельном окошке) текущий каталог, текущий файл/количество обработанных файлов/каталогов. Это позволит оператору видеть, что процесс идёт, что программа не зависла. Но у этого способа есть большой недостаток - он сильно замедляет процесс (поиск будет происходить намного дольше, хотя субъективно оператору покажется, что поиск будет идти одинаково - за счёт того, что он не ждёт, а видит результаты)

но, конечно, никто не мешает запустить сначала поиск по каталогам (без всяких сравнений и проверок), просто подсчитать общее количество файлов и потом уже использовать свой поиск с прогрессбаром. Но этот поиск всё равно займёт некоторое время. Так что, вряд ли это хороший вариант.


Цитата:
Сообщение от Аватар Посмотреть сообщение
Что такое поиск файла? Код
http://programmersforum.ru/showpost....7&postcount=14
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.06.2018, 10:06   #5
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

Serge_Bliznykov, количество файлов может постоянно меняться (удаляться/добавляться), поэтому с прогрессом Вы, наверное, правы...
Etsareva вне форума Ответить с цитированием
Старый 26.06.2018, 10:30   #6
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

а можно еще сделать к курсору типа Hint 'Ожидание ответа'?
Etsareva вне форума Ответить с цитированием
Старый 26.06.2018, 10:45   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Код:
Screen.Cursor := crHourGlass;
вернуть
Код:
Screen.Cursor := crDefault;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.06.2018, 10:57   #8
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 180
По умолчанию

я так и сделала, хотелось бы с какой-нибудь подсказкой. но это наверно надо свой подгружать...
Etsareva вне форума Ответить с цитированием
Старый 27.06.2018, 02:29   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
выводить на информационную панель (или в отдельном окошке) текущий каталог, текущий файл/количество обработанных файлов/каталогов. Это позволит оператору видеть, что процесс идёт, что программа не зависла. Но у этого способа есть большой недостаток - он сильно замедляет процесс
С чего бы вдруг так уж сильно? Вроде Total Commander Кристиана Гислера вполне с этим справляется выводя имена просматриваемых файлов
в статусбаре и добавляя найденные в листбокс. А Total Commander писан на нашем любимом Дельфи.
northener вне форума Ответить с цитированием
Старый 27.06.2018, 10:09   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
С чего бы вдруг так уж сильно?
исходя из опыта.
я не буду проводить испытания, чтобы подтвердить фактами и цифрами.
но как показывает практика, если даже банальный progressbar ввести, то время выполнения увеличивается.

да, к термину "сильно" могут быть претензии. думаю, что речь идёт о процентах (рискну от фонаря сказать, что от 1% до 20% - в зависимости от реализации), конечно же, не в разы замедляется, если Вы об этом.

Цитата:
Сообщение от northener Посмотреть сообщение
А Total Commander писан на нашем любимом Дельфи.
Это так!

Ну, строго говоря, язык тут вообще не при чём. Это замедление будет, даже если Вы на чистом С или на ассемблере напишите.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ProgressBar как Slider или Slider как ProgressBar coNsept Общие вопросы .NET 5 08.03.2012 17:00
ProgressBar ВикторСесюрити Общие вопросы Delphi 7 13.06.2011 16:24
ProgressBar masterenergy Microsoft Office Excel 0 18.03.2010 14:04
Испльзование данных одного файла Excel в другом? Vadim_abs Microsoft Office Excel 2 03.11.2009 08:33
ProgressBar Andrei Isaev Общие вопросы Delphi 1 20.11.2008 14:59