Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Прогресс бар. Параллельное выполнение двух функций

Ответить
Настройки темы
[решено] Прогресс бар. Параллельное выполнение двух функций

Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить PM | Цитировать


Изменения
Автор: McLotos
Дата: 20-04-2012
Всем привет!
Подскажите, можно ли сделать так чтобы скрипт продолжал выполнять свою работу, и параллельно шёл прогресс бар, потому-что у меня получается что либо сначала скрипт всё делает, а патом показывает прогресс, либо наиборот, сначала прогресс, затем выполнение.
Вот код самого прогресс бара.
PHP код: Выделить весь код

ProgressOn("Настройки рабочего стола""Настраиваю рабочий стол""Пожалуйста, подождите...")

For 
$i 0 To 100
ProgressSet
($i)
Sleep(120)
Next
ProgressSet
(100"Готово!")
Sleep(750)
ProgressOff() 


Я тут ещё узнал что в autoit нельзя запускать параллельно 2 цикла. Может в таком случае стоит разделить цикл прогресс бара?
Ну допустим он выполняется до 10%, запускается одно задание, патом выполняется прогресс бар 10%-20%, дальше выполняется второе задание и так далее до 100. Можно такое сделать? Если да, то подскажите как сделать паузу в прогресс баре.

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 14:42, 19-04-2012

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Предупреждение за нарушение правил форума, пункт 2.7 и пункт 3.19:

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

3.19: Запрещается... Создавать темы, имеющие неинформативные или состоящие из заглавных букв заголовки (например, "Помогите!", "HELP!", "У меня проблема"). Такие темы будут закрыты или перенесены в Тест-форум. Если вы хотите вернуть перенесенную тему обратно, пока ее не закрыли в Тест-форуме, измените ее заголовок на осмысленный и напишите об этом в теме.
Переименуйте пожалуйста тему (Как переименовать свою тему?).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 14:48, 19-04-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Проще сделать второй скрипт показывающий прогресс-бар и запускать его
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:20, 19-04-2012 | #3


Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить PM | Цитировать


Creat0R, Надеюсь я учел все Ваши замечания.
ferget, Огромное спасибо, как всегда, четкий совет. И как я сразу не додумался сделать что-то такое.

В результате сделал так:
Разделил все задачи скрипта, раскидал их по функциям. В цикл прогресс бара вставил несколько дополнительных условий и расставил там функции. Теперь получается что при выполнении цикла прогресс бара он поочерёдно вызывает задания, и за одно показывает какая функция выполняется в данный момент.

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 06:38, 20-04-2012 | #4


Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить PM | Цитировать


Почему вот такая конструкция
PHP код: Выделить весь код

For $i 0 to 100
    sleep
(100)
    If (
$i<25Then
                ProgressSet
$i"Выполнено " $i "%" & @CRLF "Сбор Информации")
    ElseIf (
25<$i<30Then
                ProgressSet
$i"Выполнено " $i "%" & @CRLF "Настройка фона")  
    ElseIf (
30<$i<50Then
                ProgressSet
$i"Выполнено " $i "%" & @CRLF "Настройка значков")
   ElseIf(
50<$i<100Then
                ProgressSet
$i"Подождите " $i "%" & @CRLF "Завершение настройки")
     EndIf
Next 

Выводит текст "Сбор Информаци"и, патом переключается на "Настройка фона" и на этом застревает (хотя прогресс продолжает идти), а патом сразу выводит Завершение настройки. Как сделать чтобы Настройка значков не пропускалась?

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 15:12, 20-04-2012 | #5


Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить PM | Цитировать


Пришлось разделить
PHP код: Выделить весь код

ProgressOn("Настройка рабочего стола""Сбор необходимых данных")
For 
$i 0 to 100
    sleep
(100)
    
ProgressSet$i"Выполнено " $i "%" & @CRLF "Сбор Информации")
 
Next 
ProgressSet
(100 "Настройка рабочего стола""Настраиваем")
For 
$i 0 to 100
    sleep
(100)
    If (
$i<25Then
    ProgressSet
$i"Выполнено " $i "%" & @CRLF "Настройка фона")  
    ElseIf (
25<$i<50Then
   ProgressSet
$i"Выполнено " $i "%" & @CRLF "Настройка значков")
   ElseIf(
50<$i<100Then
   ProgressSet
$i"Подождите " $i "%" & @CRLF "Завершение настройки")
     EndIf
Next
ProgressSet
(100 "Подождите""Завершение настройки")
sleep(750)
ProgressOff() 

Может у кого-нибудь есть предложения по-лучше?

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 15:40, 20-04-2012 | #6


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
For $i = 0 to 100
    sleep(100)
    If ($i<=25) Then
                ProgressSet( $i, "Выполнено " & $i & "%" & @CRLF & "Сбор Информации")
			ElseIf (25<$i and $i<=30) Then
                ProgressSet( $i, "Выполнено " & $i & "%" & @CRLF & "Настройка фона")
			ElseIf (30<$i and $i<=50) Then
                ProgressSet( $i, "Выполнено " & $i & "%" & @CRLF & "Настройка значков")
			ElseIf(50<$i and $i<=100) Then
                ProgressSet( $i, "Подождите " & $i & "%" & @CRLF & "Завершение настройки")
     EndIf
Next

Отправлено: 16:44, 20-04-2012 | #7


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Я бы так сделал.
Код: Выделить весь код
$sText = 'Сбор необходимых данных'
ProgressOn('Настройка рабочего стола', $sText, '0%')
Sleep(2000)
For $i = 0 To 100
    Sleep(200)
    Switch $i
        Case 0 To 19
            $sText = 'Сбор Информации'
        Case 20 To 39
            $sText = 'Настройка фона'
        Case 40 To 69
            $sText = 'Настройка значков'
        Case Else
            $sText = 'Завершение настройки'
    EndSwitch
    ProgressSet($i, 'Подождите ' & $i & '%' & @CRLF & $sText)
Next
Sleep(2000)
ProgressOff()
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:12, 20-04-2012 | #8


Аватара для McLotos

Старожил


Сообщения: 410
Благодарности: 21

Профиль | Отправить PM | Цитировать


ТОЧНО! БЛИН! Я даже не подумал применить здесь кейс, только придётся чуть-чуть ещё подправить.

-------
Старайтесь не решать свои проблемы по средствам личных сообщений, они могут быть решены очень не скоро.Не забывайте пользоваться поиском по форуму.Помните что уникальных проблем не бывает.Если всё-таки ответа не нашли, создайте тему, с подробным описанием проблемы.Спасибо за понимание.


Отправлено: 17:22, 20-04-2012 | #9


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


McLotos,
Посмотрите еще пример к функции _GUICtrlStatusBar_EmbedControl()

Отправлено: 17:49, 20-04-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Прогресс бар. Параллельное выполнение двух функций

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Прогресс бар для vbscript neo21 Скриптовые языки администрирования Windows 2 27-10-2011 13:31
[решено] Как сделать прогресс бар с показом выполнения комманд? in-com AutoIt 7 08-10-2010 12:33
[решено] progressbar (прогресс-бар) до появления конкретного окна saavaage AutoIt 7 28-09-2010 20:24
[решено] [PHP] Прогресс-бар (счетчик игроков) D_Master Вебмастеру 3 27-03-2009 18:41
[решено] Прогресс бар semiono AutoIt 17 24-03-2009 23:18




 
Переход