1 (изменено: Badboy, 2011-11-24 15:53:54)

Тема: AHK: Переменная в цикле

Добрый день, уважаемые форумчане.
Помогите пожалуйста в таком вопросе:
Я создаю переменную var%i%

       

 i := 0
loop
    {
    i := i+1
    Send, ^{sc02E} ; нажать CTRL + С (копировать в буфер)
    
    var%i% := clipboard
    MsgBox "Что здесь нужно написать, чтобы выдавалось значение переменной?"
        
    }

Вопрос: как добиться, чтобы в сообщении выдавалось содержимое переменной? Какой должен быть синтаксис?

2

Re: AHK: Переменная в цикле

Badboy, оформляйте код правильно. Отредактируйте первое сообщение.
B справке смотрите раздел  "Variables and Expressions" (Переменные и выражения).
Пример:

 i := 0
var%i% := clipboard
MsgBox, % var%i%

3

Re: AHK: Переменная в цикле

ypppu пишет:

Badboy, оформляйте код правильно. Отредактируйте первое сообщение.
B справке смотрите раздел  "Variables and Expressions" (Переменные и выражения).
Пример:

 i := 0
var%i% := clipboard
MsgBox, % var%i%

Огромное спасибо!

4

Re: AHK: Переменная в цикле

OFF: Bad, bad boy!

5

Re: AHK: Переменная в цикле

ypppu пишет:

Badboy, оформляйте код правильно. Отредактируйте первое сообщение.

6

Re: AHK: Переменная в цикле

А как правильно?

7

Re: AHK: Переменная в цикле

Теперь правильно. А если ещё указывать язык [Выберете язык] --> [AHK], то в коде скрипта будут автоматически даваться ссылки на использованные команды, встроенные переменные и т. д. Очень удобно.

8

Re: AHK: Переменная в цикле

Как сделать так что бы нажатие (любой) кнопки,происходило только тогда когда значение переменной - цыфра между 10.00 и 90.00?

Тобишь если значение 2.00 - (Ничего не делать)
Если 12.00 - (Нажать один раз клавишу Q)
Если 84.00 -  (Нажать один раз клавишу Q)
Если же число выше 90.00 - (Ничего не делать)

---

Набросал нубский скрипт.

#Persistent
JoystickNumber = 1

SetTimer,JoyY1,10
Return

JoyY1:
SetFormat, float, 0.2
GetKeyState, JoyY, %JoystickNumber%JoyY
If  JoyY > 10.00
{
If  JoyY < 90.00
{
Send,{1}
}
}
return

Как бы сделать более грамотно?

9

Re: AHK: Переменная в цикле

...
GetKeyState, JoyY, %JoystickNumber%JoyY
Send, % JoyY>=10.00 And JoyY<=90.00 ? "{vk51}":""
...

10

Re: AHK: Переменная в цикле

Уяснил.А как сделать так что не одна клавиша нажималась а зупускался цыкл,и что бы работал до тех пор пока перемення не выйдет за эти рамки 10.00 - 90.00?

11

Re: AHK: Переменная в цикле

GetKeyState, JoyY, %JoystickNumber%JoyY
If (JoyY>=10.00 And JoyY<=90.00) {
    ; действия
}

12

Re: AHK: Переменная в цикле

Пробовал методом тыка...сделал почти так,не знал что в скобки обрамлять надо.
Спасибо.

13

Re: AHK: Переменная в цикле

Доброго времени суток.
Прошу помощи с одним скриптом для игры.
Желаемый принцип работы:
---
T::
Узнать значение переменной.
Значение ровняется Х
Loop
{
Узнать значение переменной.
Если значение меньше Х (Одно действие)

Усди значение больше Х (Дрйгое  действие)

Если отпустить "T" цыкл заканчивается
}
Return

-------------------------------------------------------------------
Сделал один набросок,но по каким то причинам отказывается работать как требуется.

t::

Click,left,down

 ProcessHandle := DllCall("OpenProcess" , "int", 2035711
 , "char", 3
 , "UInt", 1116
 , "UInt") 
 
 DllCall("ReadProcessMemory" , "UInt", ProcessHandle
 , "UInt", 0xFB2E8A84
 , "Uint*", ap
 , "Uint", 8
 , "Uint*", 0)

x := ap

Loop
{
  ProcessHandle := DllCall("OpenProcess" , "int", 2035711
 , "char", 3
 , "UInt", 1116
 , "UInt") 
 
 DllCall("ReadProcessMemory" , "UInt", ProcessHandle
 , "UInt", 0xFB2E8A84
 , "Uint*", ap2
 , "Uint", 8
 , "Uint*", 0)

DllCall("CloseHandle" , "int", ProcessHandle)

if ap2 <= x
{
DllCall("mouse_event",uint,1,int,0,int,10,uint,0,int,0) 
}
if ap2 >= x
{
DllCall("mouse_event",uint,1,int,0,int,-10,uint,0,int,0) 
}
GetKeyState,tsT,t,P
If tsT = U
break
}
Click,left,up
Return

Где допущена ошибка?

14

Re: AHK: Переменная в цикле

Попробуй вместо t:: использовать сканкод sc14:: и записать GetKeyState,tsT,sc14,P

15

Re: AHK: Переменная в цикле

Спасибо,попробую сделать так.
А подскажите на счёт самой труктуры скрипта,всё ли правильно?
Он по идее работает,но как то странно. Вместо того что бы делать какое либо действие в зависимости от значения переменной,он просто делает одно действие (как будто) невзирая на значение переменной.
Быть может проблема заключается именно в самом построении?

16

Re: AHK: Переменная в цикле

Gabe_#33 пишет:

Как сделать так что бы нажатие (любой) кнопки,происходило только тогда когда значение переменной - цыфра между 10.00 и 90.00?

Тобишь если значение 2.00 - (Ничего не делать)
Если 12.00 - (Нажать один раз клавишу Q)
Если 84.00 -  (Нажать один раз клавишу Q)
Если же число выше 90.00 - (Ничего не делать)

---

Набросал нубский скрипт.

#Persistent
JoystickNumber = 1

SetTimer,JoyY1,10
Return

JoyY1:
SetFormat, float, 0.2
GetKeyState, JoyY, %JoystickNumber%JoyY
If  JoyY > 10.00
{
If  JoyY < 90.00
{
Send,{1}
}
}
return

Как бы сделать более грамотно?

Можно проще.


if (JoyY<90.00 and JoyY>10.00)
{
Send, Q
}

17 (изменено: Eduard, 2012-08-10 00:40:39)

Re: AHK: Переменная в цикле

смотри:

if JoyY between 10.00 and 90.00
    msgbox, Q

18

Re: AHK: Переменная в цикле

По поводу:
If var [not] between LowerBound and UpperBound

19

Re: AHK: Переменная в цикле

Как делалось обратное добавление в переменную, чтобы цифры добавлялись слева: «...321»? —

Loop
{ 
   num := A_Index
   str .= num
   msgbox % str
}

20

Re: AHK: Переменная в цикле

str := num str
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui
+ DD

21 (изменено: felrok, 2019-02-22 18:40:27)

Re: AHK: Переменная в цикле

Проще использовать массив:


var = []
 i := 0
loop
    {
    i+=1
    Send, ^{sc02E} ; нажать CTRL + С (копировать в буфер)
    
    var[i] := clipboard
    MsgBox % var[i]
        
    }

22 (изменено: kamelotto, 2019-12-18 04:47:54)

Re: AHK: Переменная в цикле

Ёмаё! AHK действительно, частенько ведёт себя недокументированно. Я сейчас тестирую возможности АНК с разными символами в строках. Но поведение АНК требует объяснения. Пока в записи кода была синкасическая ошибка, код работал без проблем:

Repli = Замена 
String =<-1-><-2-><-3->TEXT-1!<-4-><<-5->>TEXT-2<:-6-:>Ёмаё<'-7-'>
SP :=1

Но как только я исправил ошибку в синтаксисе:

Repli := Замена 
String := <-1-><-2-><-3->TEXT-1!<-4-><<-5->>TEXT-2<:-6-:>Ёмаё<'-7-'>
SP :=1

, сразу стало выскакивать окно:
---------------------
Error at line 9.

Line Text: '
Error: The leftmost character above is illegal in an expression.

The program will exit.

Во первых, что происходит?
А во вторых, как быть? В строках будут появляться разные символы. Надо, что бы переменная, всё таки принимала их, без капризов.

23

Re: AHK: Переменная в цикле

После := строка должна быть в кавычках. Знак = для присвоения тоже можно использовать, это удобно, когда внутри строки есть литеральные кавычки, и в случае с := их приходится дублировать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

24

Re: AHK: Переменная в цикле

kamelotto пишет:

AHK действительно, частенько ведёт себя недокументированно.

Практически никогда. В 99,9% случаев проблемы у вас будут от его неправильного использования.

25 (изменено: kamelotto, 2019-12-18 12:42:21)

Re: AHK: Переменная в цикле

teadrinker
То есть, и := и просто = — одинаково применимы? Знак равно, без предшествующего двоеточия, не ошибка?
Просто в операциях присвоения, в русской справке я его не нашёл. Там этот список:
:=
+=
-=
*=
/=
//=
.=
|=
&=
^=
>>=
<<=

26

Re: AHK: Переменная в цикле

Смотрите ближе к началу статьи.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

27 (изменено: kamelotto, 2019-12-19 01:31:17)

Re: AHK: Переменная в цикле

teadrinker
В том то всё и дело, что знак "=" указан в списке операторов сравнения. Но в длинном списке операторов присваивания его нет. Трудно догадаться, что сравнение можно применить, как присваивание. Может стоит указать его и в разделе присваивания? Как примечание переводчика. А за одно и описать разницу в применении со строками содержащими одинарные кавычки. А то эти грабли так и будут валяться для всех вновь-прибывших.

28

Re: AHK: Переменная в цикле

Может и можно, я не против.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

29

Re: AHK: Переменная в цикле

kamelotto, наверно до сих пор новички начинали изучать на примерах. Вы первый, кто начал со чтения документации.

30 (изменено: kamelotto, 2019-12-20 06:00:27)

Re: AHK: Переменная в цикле

Почему то не могу задать вопрос в теме об организации циклов. Внизу надпись, что у меня не хватает прав отвечать в данной теме. Новую тему я тоже не могу создать. Поэтому пишу здесь:
Пытаюсь понять, как организовать циклы в AHK. Не понимаю, почему не работает. Задача для теста:
Хочу заставить переменную V Дорасти от 0 до 4 и выйти из цикла.

V := 0
MsgBox, % "На старте переменная равна: " . V
Loop
{
if V == 4
MsgBox, % "Переменная равна: " . V
break 
if V < 4
continue
V := V +1
MsgBox, % "Переменная равна: " . V
}

Срабатывает только первый МсБокс:
---------------------------
На старте переменная равна: 0
---------------------------
И на этом всё. Что я не так понимаю? Что не так делаю?

31

Re: AHK: Переменная в цикле

kamelotto пишет:

Почему то не могу задать вопрос в теме об организации циклов.

Где та тема? Дайте ссылку.

32 (изменено: kamelotto, 2019-12-20 15:35:25)

Re: AHK: Переменная в цикле

ypppu
Ссылка на тему:
http://forum.script-coding.com/viewtopic.php?id=1615

Но, в принципе, у меня сейчас идёт вопрос о переменной в цикле. Так что можно и тут обсудить мой код.

33

Re: AHK: Переменная в цикле

Команда continue немедленно пропускает текущую итерацию цикла и начинает новую.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

34 (изменено: kamelotto, 2019-12-20 18:22:46)

Re: AHK: Переменная в цикле

belyankin12
Ура-а-а! Заработало! Разобрался

V := 0
MsgBox, % "На старте переменная равна: " . V
Loop
{
	if V < 4
	{
		V := V +1
		MsgBox, % "Переменная равна: " . V
	}
continue
	if V == 4
	{
		MsgBox, % "Переменная равна: " . V
		break
	} 

}

Теперь выводится поочерёдно 4 МсБокса и цикл после этого прекращается.

35 (изменено: kamelotto, 2019-12-20 18:32:45)

Re: AHK: Переменная в цикле

А как можно удалить вопрос, до первого ответа на него, если вдруг решение найдено. Ну что бы других не беспокоить?

36

Re: AHK: Переменная в цикле

kamelotto пишет:

Почему то не могу задать вопрос в теме об организации циклов.
...
Ссылка на тему: http://forum.script-coding.com/viewtopic.php?id=1615

Правила форума пишет:

Раздел Коллекция скриптов и идей, состоящий из нескольких тематических форумов-подразделов, предназначен для хранения полезных скриптов, идей и находок участников сообщества. Этот раздел по сути является не форумом, а хранилищем полезной информации. Доступ к разделу несколько ограничен:

    Читать раздел и скачивать прикреплённые файлы могут все посетители, в т.ч. неавторизованные.
    Писать в раздел и прикреплять файлы могут только Администраторы, Модераторы и Разработчики.

kamelotto пишет:

А как можно удалить вопрос, до первого ответа на него, если вдруг решение найдено. Ну что бы других не беспокоить?

Никак. Можно подумать до того, как задавать вопрос. Или можно отредактировать сообщение, написать что решение найдено.

37

Re: AHK: Переменная в цикле

kamelotto пишет:

Ура-а-а! Заработало! Разобрался

Не хочется вас расстраивать, но нет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

38

Re: AHK: Переменная в цикле

teadrinker
Да я уже всё переделал много раз. У меня теперь другая проблемка. С ошибкой от Гугла.