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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2015, 16:37   #1
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
По умолчанию ProgressBar без цикла

Доброго времени суток, уважаемые форумчане!
Перечитал много информации по прогрессбарам и не нашел подходящего решения для меня... Надеюсь на вашу помощь!
У меня есть модуль который парсит веб странички, выбирая оттуда необходимую информацию (заходит на одну страницу, выбирает данные по клиенту, потом переходит на следующую и т.д....) Все это действие занимает секунд 10-15, все зависит от загруженности серверов которые предоставляют веб интерфейс. Так вот, привязать "линейку" не к чему, так как это не цикл...
Есть идеи?
Fordros вне форума Ответить с цитированием
Старый 22.07.2015, 17:04   #2
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Fordros Посмотреть сообщение
Так вот, привязать "линейку" не к чему, так как это не цикл...
Есть идеи?
Какую линейку? С какими данными? А к файлу, куда с веб-страничек подгружается необходимая информация, нельзя привязать?
Кардаган вне форума Ответить с цитированием
Старый 22.07.2015, 17:30   #3
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Кардаган Посмотреть сообщение
Какую линейку? С какими данными? А к файлу, куда с веб-страничек подгружается необходимая информация, нельзя привязать?
Линейка - это прогрессбар
Данные разного характера
последнее не понял...

Да и это все не имеет значение, так как для брогрессбара пофиг что именно делает код, он основывается на счетчиках... А у меня модуль имеет например 300 строк и за эти 300 строк он выбирает все что нужно для дальнейшей работы, вопрос в том как отобразить выполнение этого кода!?
Fordros вне форума Ответить с цитированием
Старый 22.07.2015, 17:35   #4
Кардаган
Форумчанин
 
Регистрация: 07.07.2015
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Fordros Посмотреть сообщение
за эти 300 строк он выбирает все что нужно для
Ну выбрал код - куда он выводит эти данные? Или он их в себе хранит.
Кардаган вне форума Ответить с цитированием
Старый 23.07.2015, 08:29   #5
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

А вот это решение не подходит???
http://www.programmersforum.ru/showthread.php?t=277342
27102014 вне форума Ответить с цитированием
Старый 23.07.2015, 09:16   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Так вот, привязать "линейку" не к чему, так как это не цикл...
Цитата:
потом переходит на следующую и т.д....
Цикл организованный на очереди/стеке/... (короче некоем списке).
Цитата:
парсит веб странички, выбирая оттуда необходимую информацию
еще один цикл, возможно построенный на рекурсивном обходе дерева тегов.

Начинать надо с постановки задачи
Что хотите отображать в ProgessBar?
какое из "оставшихся времен"
1) числа оставшихся страниц
2) собственно времени загрузки(получения) страницы. (а вы можете узнать это время ДО загрузки?)
3) время работы парсера страницы.

Цитата:
А у меня модуль имеет например 300 строк и за эти 300 строк он выбирает все что нужно
т.е. п.3
тогда например так:
первой строкой кода делаем
Progrssbar.Max:=300;
и после каждой строки кода изменять (+1) текущую позицию.

P.S. для оптимизации можно подобрать нужный шаг.
300 строк =10 сек
1 строка =0.03 сек
10 строк =0.3 сек
100 строк =3 сек

P.S. Вот только показано все это будет только после 300-ой строки.
Если конечно не принять никаких доп. мер.
А если эти меры принять, то время работы увеличится пожалуй раза в два.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 23.07.2015 в 09:22.
evg_m вне форума Ответить с цитированием
Старый 23.07.2015, 11:20   #7
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от 27102014 Посмотреть сообщение
А вот это решение не подходит???
http://www.programmersforum.ru/showthread.php?t=277342
Читайте название темы! (уточняю - нужен ПБ без цикла)
Fordros вне форума Ответить с цитированием
Старый 23.07.2015, 11:25   #8
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
и после каждой строки кода изменять (+1) текущую позицию.
Уважаемый evg_m, на сколько я понял, то Вы имеете ввиду, после каждой строки выполненного кода прописывать увеличенное на 1 значение PrBar, т.е. увеличить код в 2 раза? Это привязка к Line VBA, по типу обработки ошибок с выведением строки в которой произошла такова?

Уточню алгоритм работы - в диалоговом окне юзер набивает номер ПК и нажимает на кнопку поиск, после чего методом Call вызывается код который открывает IE, проходит логинизацию, переходит на страничку поиска платежной карты, парсит все содержимое странички и выбирает необходимые данные из разних тегов и вставляет их в определенные ячейки на лист (печатная форма заявления...), переходит на следующую страничку, там парсит и т.д... Мне нужно показать на форме ход выполнения выборки данных, так как IE.Visible = False

Последний раз редактировалось Fordros; 23.07.2015 в 11:33.
Fordros вне форума Ответить с цитированием
Старый 23.07.2015, 11:27   #9
Fordros
Пользователь
 
Регистрация: 26.06.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Кардаган Посмотреть сообщение
Ну выбрал код - куда он выводит эти данные? Или он их в себе хранит.
Почти все выбранные данные он помещает в разные ячейки печатной формы, заранее подготовленной в экселе
Fordros вне форума Ответить с цитированием
Старый 23.07.2015, 11:43   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
после каждой строки выполненного кода прописывать увеличенное на 1 значение PrBar,
Да именно так.

Цитата:
т.е. увеличить код в 2 раза?
А вы полагаете, что будь у вас цикл из одной строки(внутренний код цикла),
то для индикации ProgressBar не пришлось бы то увеличить код в ТЕ ЖЕ два раза.

Цитата:
P.S. для оптимизации можно подобрать нужный шаг.
т.е. изменять позицию ProgressBar после произвольного (эвристически подобранного!!!) числа строк с тем чтобы обновление(изменение) ProgressBar происходило с нужной (приемлемой) частотой (не слишком часто, но и не слишком редко).
Цитата:
300 строк =10 сек
1 строка =0.03 сек
10 строк =0.3 сек
100 строк =3 сек
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 23.07.2015 в 11:50.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вытащить из массива, без цикла. Predator199 PHP 2 25.11.2012 17:25
Как вывести данные из mysql без цикла? SL1M_DOGG PHP 10 16.04.2012 18:18
составить программу на паскале используя оператор цикла в сочетании с оператором условного перехода(без массивов) Naruto_026 Паскаль, Turbo Pascal, PascalABC.NET 1 01.11.2011 19:19
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
С помощью рекурсии без операторов цикла и перехода написать процедуру P(N) WhyBeNormal Помощь студентам 1 29.01.2009 01:20