Что нового

Как отобразить текущий цикл оператора for $i ... to ...

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Собственно возможно ли при выполнении скрипта увидеть на каком этапе находится цикл оператора for $i ... to ... Next? скажем после запуска скрипта в GUI окошке отображается текущее значение или еще как нибудь если да покажите пример.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Viktor1703
ну да это понятно наверное не правильно сформулировал вопрос, как увидеть прогресс визуально, динамически изменяющийся и не в консоли :blink: если такое конечно возможно?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
$hForm = GUICreate('', 300, 60)
$iProgress = GUICtrlCreateProgress(20, 20, 260, 20)
GUISetState()

For $i = 0 To 100
	GUICtrlsetData($iProgress, $i)
	Sleep(20)
Next	

For $i = GUICtrlRead($iProgress) To 0 Step -1
	GUICtrlsetData($iProgress, $i)
	Sleep(20)
Next
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Viktor1703
Великолепно :ok: жаль только что на маленьких циклах до 50 показывает не полностью прогресс цикл раньше заканчивается а прогресс показывает половину или я что то не так делаю ? хотя тупо скопировал и запустил :-[
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
жаль только что на маленьких циклах до 50 показывает не полностью

Можно сделать чтоб полностью показывал при любых значениях.

Код:
$hForm = GUICreate('', 300, 60)
$iProgress = GUICtrlCreateProgress(20, 20, 260, 20)
GUISetState()

UpProgress($iProgress, 50, 20)  
DownProgress($iProgress, 20)
 
UpProgress($iProgress, 200, 20)  
DownProgress($iProgress, 20)

Func UpProgress($iCtrl, $iVal, $iSleep)
	For $i = 0 To 100
        GUICtrlsetData($iCtrl, ($i + Round($iVal / 100)))
        Sleep($iSleep)
    Next 
EndFunc

Func DownProgress($iCtrl, $iSleep)
	For $i = 100 To 0 Step -1
        GUICtrlsetData($iCtrl, ($i - Round(GUICtrlRead($iCtrl) / 100)))
        Sleep($iSleep)
    Next   
EndFunc

Код:
$hForm = GUICreate('', 300, 60)
$iProgress = GUICtrlCreateProgress(20, 20, 260, 20)
GUISetState()

UpProgress($iProgress, 50)  
DownProgress($iProgress, 20)
 
UpProgress($iProgress, 201)  
DownProgress($iProgress, 20)

Func UpProgress($iCtrl, $iVal, $iSleep = 10)
	Local $i = 0
	Do 
        GUICtrlsetData($iCtrl, ($i + Round($iVal / 100)))
		$i += 1
		Sleep($iSleep)	
	Until GUICtrlRead($iCtrl) >= 100
EndFunc

Func DownProgress($iCtrl, $iSleep)
	Local $i = GUICtrlRead($iCtrl)
	Do
        GUICtrlsetData($iCtrl, ($i - Round(GUICtrlRead($iCtrl) / 100)))
		$i -= 1
        Sleep($iSleep)
    Until GUICtrlRead($iCtrl) <= 0   
EndFunc
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Viktor1703 [?]
Можно сделать чтоб полностью показывал при любых значениях.

Хм тоже интересные решения ... Хотя первые варианты больше подходят потому как скрипт циклом в 1000 раз работает где то 8 часов и момент запуска этого цикла проследить не всегда удается, так как запускается автоматом и ночью тоже, вот и понадобилось чтоб прогресс бар или еще что то показывало сколько прошло время или сколько осталось первые варианты хоть приблизительно отображают когда конец этому действию :stars:
Хотя консоль из первого варианта точно показывает текущий цикл может все таки есть какой то способ эти циферки увидеть в окошке или забыть про это ... не сочтите за назойливость.
Еще раз спасибо за помощь и за понимание.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
$hForm = GUICreate('', 300, 60)
GUISetState()

For $i = 0 To 1000
	WinSetTitle($hForm, '', $i)
	Sleep(10)
Next

Код:
$hForm = GUICreate('', 300, 60)
$iLabel = GUICtrlCreateLabel('', 20, 20, 50, 20)
GUISetState()

For $i = 0 To 1000
	GUICtrlSetData($iLabel, $i)
	Sleep(10)
Next
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
general66
Возможно при помощи
Код:
ToolTip()
подойдет
Показ значения переменной:
Код:
For $i = 0 To 999
	ToolTip("Значение = " & $i, 0, 0) ;верхний левый угол экрана
	Sleep(10)
Next
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Viktor1703

Блин самое то :ok: нет слов один щенячий восторг :laugh: спасибо ОГРОМНОЕ за помощь.


Yuriy [?]
Возможно при помощи

Тоже отличный вариант для скрипта работающего в фоне или без GUI Благодарю за помощь :beer:
 
Верх