Что нового

[Баг] Вызов функции TimerInit без скобок

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Версия 3.3.10.0 - 3.3.13.10 beta.

Если в скрипте при написании функции TimerInit не указать скобки, то ошибка зафиксирована не будет и дальнейшие действия приводят к неверным результатам
Код:
; правильная запись
$t1 = TimerInit()
Sleep(100)
ConsoleWrite(TimerDiff($t1) & @CRLF)

; неправильная запись
$t2 = TimerInit ; <= отсутствие скобок не приводит к ошибке
Sleep(100)
ConsoleWrite(TimerDiff($t2) & @CRLF) ; неверный результат


На версии 3.3.8.0 данная ошибка фиксировалась и приводила к остановке скрипта.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
InnI [?]
На версии 3.3.8.0 данная ошибка фиксировалась и приводила к остановке скрипта
Нужно проверять список изменений при переходе на новую версию.

AutoIt 3.3.10.0 - Финал
...
Добавлено: В переменных теперь можно ссылаться на функции, и функция может быть вызвана посредством переменной.

В данном случае, $t2 это указатель на функцию, можно использовать так:
Код:
$t = TimerInit
$t2 = $t()
Sleep(100)
ConsoleWrite(TimerDiff($t2) & @CRLF)
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
CreatoR [?]
Нужно проверять список изменений
Читал ведь. Видимо, не придал значения, т.к. подобные конструкции не использовал.
Теперь надо внимательней писать код...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Kaster [?]
а раньше можно было не внимательно писать?
Сейчас реально нужно внимательно, раньше тоже, но сейчас уже многое не так как было раньше, как мы привыкли, нужно каждый раз перечитывать список изменений если старый код работает как то не так как раньше, или вовсе не работает.
 
Верх