Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

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

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

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

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


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

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

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

Код:

Screen.Cursor := crHourGlass;

вернуть
Код:

Screen.Cursor := crDefault;

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 26.06.2018, 11:57   #8
Etsareva
Форумчанин
 
Регистрация: 26.01.2018
Сообщений: 127
Репутация: 10
По умолчанию

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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 15:04
Испльзование данных одного файла Excel в другом? Vadim_abs Microsoft Office Excel 2 03.11.2009 09:33
ProgressBar Andrei Isaev Общие вопросы Delphi 1 20.11.2008 15:59


22:19.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru