Тема: AHK: Изменилось значение то
У меня есть скрипт:
string := A_Hour
Loop {
if (String = String)
else
Msgbox Час изменился на %A_Hour%
}Но он не работает, мне нужно, чтобы если час изменился, то он это писал в Msgbox, всем спасибо.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
У меня есть скрипт:
string := A_Hour
Loop {
if (String = String)
else
Msgbox Час изменился на %A_Hour%
}Но он не работает, мне нужно, чтобы если час изменился, то он это писал в Msgbox, всем спасибо.
Во-первых не вижу смысла вообще в строчке if (...). И не только потому, что у вас запись примерно такая: If (1 = 1), а ещё и потому, что у вас нет действия в случае есть string = string, а потому в этой строчке смысла нет. Две строчки if else можно заменить, использовав вместо "=" "!=". А во-вторых, переменная не обновляется при обращению к ней, для таких целей можете использовать функцию, но гораздо эффективнее использовать статичную переменную и while.
belyankin12, так я и спросил как сделать.
Ну я вам и ответил, что непонятного? Я не напишу код за вас, я только скажу вам алгоритмы и назову нужные команды. Вы должны сами дойти до понимания логики выполнения вашей задачи, тогда я смогу быть уверен в том, что вы научитесь решать эту задачу самостоятельно.
Блин опять пришлось искать на англоязычных форумах - https://autohotkey.com/board/topic/846-and-operators/
belyankin12, я ничего не просил за меня писать. Я просил подсказать так же, как и эти ребята -
its <>
Sample:
If MyVariable <> MyExpectation ; AHK's advanced syntax
MsgBox, Damn !
IfNotEqual, MyVariable, MyExpectation; MsgBox,
| ; AutoIt2's syntax
Я не понимаю чем вы недовольны тогда. Подсказка есть, что непонятно - спрашивайте.
Во-первых не вижу смысла вообще в строчке if (...). И не только потому, что у вас запись примерно такая: If (1 = 1), а ещё и потому, что у вас нет действия в случае есть string = string, а потому в этой строчке смысла нет. Две строчки if else можно заменить, использовав вместо "=" "!=". А во-вторых, переменная не обновляется при обращению к ней, для таких целей можете использовать функцию, но гораздо эффективнее использовать статичную переменную и while.
Спасибо, но я так и не понял, как реализовать ваш алгоритм в действии, так что-ли:
String := A_Hour
While A_Hour != String
Msgbox Час изменилсяВсе верно. Только фигурные и круглые скобки расставьте и все.
Так?
String := A_Min
While (A_Min != String)
{
Msgbox % "Минута изменилась на значение " A_Min
}А сорян я дебил. Вот скрипт:
Loop {
While (A_Min != String)
{
String := A_Min
Msgbox % "Минута изменилась на значение " A_Min
}
}Вот еще вариант:
Loop {
string := A_Min
if (String <> A_Min)
{
Msgbox % "Минута изменилась на " A_Min
}
}В посте 11 только код нелогичный и неверный. Нелогичный в том, что у вас цикл в цикле. Неправильный в том, что постоянная переменная обновляется с каждой итерацией цикла и у вас опять выходит условие if (1 = 1). Вне цикла должна быть сохранена постоянная переменная, с которой вы будете сравнивать переменную минуты.
Ну а теперь о While.
Loop {
if (1 != 1) {
msgbox, 1 != 1
}
}
While (1 != 1) {
msgbox, 1 != 1
}Я привел два цикла, один классический, другой с условием. Оба работают абсолютно одинаково. Разбирайтесь.
While (1 != 1) { msgbox, 1 != 1 }
Тут без Loop не работает.
Оно и не сработает никогда, условие не будет достигнуто, попробуйте любое другое, выполнимое условие. Я для наглядности его придумал, но видимо неудачный пример у меня был.
Coffi, код не оформлен, поэтому отображается криво. Обрамите его тегом "code".
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться