Написал следующуюпрограмму:
нажимаем кнопку, она исчезает, а взамен появляется новая (скрипт тем временем переходит в режим OnEvent), текст в которой представляет собой секундомер, работающий в режиме реального времени. Очень долго ломал голову над тем как засунуть в текст кнопки секундомер. В итоге придумал - пересоздавать кнопку каждую секунду уже с новым текстом.
Меня терзают смутные сомнения по поводу рациональности этого кода. Вот если создать ссылку на переменную, а ссылку засунуть в текст... Как то так... В общем эксперименты ничего не дали.
Вообще оптимизация этого кода, по моему, очень даже актуальный вопрос (для меня, по крайней мере
)
Какие мысли, господа?)
нажимаем кнопку, она исчезает, а взамен появляется новая (скрипт тем временем переходит в режим OnEvent), текст в которой представляет собой секундомер, работающий в режиме реального времени. Очень долго ломал голову над тем как засунуть в текст кнопки секундомер. В итоге придумал - пересоздавать кнопку каждую секунду уже с новым текстом.
Меня терзают смутные сомнения по поводу рациональности этого кода. Вот если создать ссылку на переменную, а ссылку засунуть в текст... Как то так... В общем эксперименты ничего не дали.
Вообще оптимизация этого кода, по моему, очень даже актуальный вопрос (для меня, по крайней мере

Какие мысли, господа?)
Код:
#include <GUIConstantsEx.au3>
global $time
global $i
guicreate ("Secondcounter", 120, 90)
$button1=guictrlcreatebutton ("Нажать", 10, 10, 100, 30)
guisetstate ()
while $i<=2
$msg=guigetmsg ()
select
case $msg=$button1
opt ("guioneventmode", 1)
$i=3
endselect
wend
guictrlsetstate ($button1, $gui_hide)
$button2=guictrlcreatebutton ("0:00:00", 10, 50, 100, 30)
MySeccounter ($time)
guidelete()
exit
func MySeccounter ($time)
$hour=0
$min=0
$sec=0
while 1
while $min<=59
while $sec<=59
sleep (1000)
$sec+=1
select
case $sec<10 and $min<10
$time=$hour & ":0" & $min & ":0" & $sec
guictrldelete ($button2)
$button2=guictrlcreatebutton ($time, 10, 50, 100, 30)
case $sec>9 and $min<10
$time=$hour & ":0" & $min & ":" & $sec
guictrldelete ($button2)
$button2=guictrlcreatebutton ($time, 10, 50, 100, 30)
case $sec<10 and $min>9
$time=$hour & ":" & $min & ":0" & $sec
guictrldelete ($button2)
$button2=guictrlcreatebutton ($time, 10, 50, 100, 30)
case $sec>9 and $min>9
$time=$hour & ":" & $min & ":" & $sec
guictrldelete ($button2)
$button2=guictrlcreatebutton ($time, 10, 50, 100, 30)
endselect
wend
$min+=1
$sec=0
select
case $min<10
$time=$hour & ":0" & $min & ":0" & $sec
guictrldelete ($button2)
$button2=guictrlcreatebutton ($time, 10, 50, 100, 30)
case $min>9
$time=$hour & ":" & $min & ":0" & $sec
guictrldelete ($button2)
$button2=guictrlcreatebutton ($time, 10, 50, 100, 30)
endselect
wend
$hour+=1
$min=0
$time=$hour & ":0" & $min & ":0" & $sec
guictrldelete ($button2)
$button2=guictrlcreatebutton ($time, 10, 50, 100, 30)
wend
endfunc