1

Тема: AHK: Массив в цикле

Подскажите как записать массив данных "пн вт ср чт пт сб вс" в цикл?

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

1 вт
2 ср
3 чт
4 пт
6 сб
итд

С циклом 1 2 3 все просто, как зациклить пн-вс?

Спасибо

2

Re: AHK: Массив в цикле

Не понятно, нужно больше подробностей.

3

Re: AHK: Массив в цикле

Rover пишет:

Подскажите как записать массив данных "пн вт ср чт пт сб вс" в цикл?
Задача запросить у пользователя число и день недели, после запуска, программа должна в столбик записать данные вида:
...
С циклом 1 2 3 все просто, как зациклить пн-вс?

Я не понял что именно нужно. Если получить день недели по дате, то это можно сделать функцией FormatTime, указав WDay в качестве формата(как и в США, первым днём там считается воскресенье).
Ну а массив, наверно, проще всего так заполнить:

str:= "пн вт ср чт пт сб вс"
Loop Parse, str , %A_Space%
{
   DayOfWeek%A_Index% := A_LoopField
}
; дальше вывод, записанного выше массива
Loop 7
{
   msgbox % "DayOfWeek" . A_Index . " = " . DayOfWeek%A_Index%
}

4 (изменено: creature.ws, 2011-10-30 06:01:30)

Re: AHK: Массив в цикле

А мне почему-то кажется , что вопрос про методику создания и заполнения Associative Arrays

5

Re: AHK: Массив в цикле

date = 22
day = пт
Month = 28   ; сколько дней в месяце

Week := "пн вт ср чт пт сб вс"
WeekArray := [], MonthArray := []

Loop, parse, Week, %A_Space%
   WeekArray[A_Index] := A_LoopField
   
for NumberDay, NameDay in WeekArray   ; получаем ключ (NumberDay)
   if (NameDay = day)
      Break
      
Loop % Month
{
   MonthArray[date++] := WeekArray[NumberDay]

   if (date = Month+1)
      date := 1, NumberDay := mod(NumberDay + 7 - mod(Month, 7), 7)
      
   NumberDay := NumberDay = 7 ? 1 : ++NumberDay
}

Loop % Month
   Text .= A_Index . " " . MonthArray[A_Index] . "`n"
   
MsgBox, % SubStr(Text, 1, -1)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Массив в цикле

Здоровья всем.
Подскажите пожалуйста, как правильно выглядит запись массива в цикле, содержащего строки адреса к файлам для процедуры ImageSearch. Например, создаём массив:


imgArr := ["img\1.bmp"
	, "img\2.bmp"
	, "img\3.bmp"
	, "img\N.bmp"]

Работает, если перед использованием текущего элемента массива помещать его в переменную и уже её подставлять в тело цикла в виде:


myVar := imgArr[i]
ImageSearch, varX, varY, 0, 0, A_ScreenWidth, A_ScreenHeight, %myVar%

Но я понимаю, что это бег на костылях и текущий элемент можно использовать напрямую. Но как? Гугл не предлагает готовых примеров на русском.

7

Re: AHK: Массив в цикле

ImageSearch, varX, varY, 0, 0, A_ScreenWidth, A_ScreenHeight, % imgArr[i]
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: KusochekDobra, 2016-04-23 03:44:45)

Re: AHK: Массив в цикле

Прошу прощения, забыл указать, что процедура вызывается с параметрами и вероятно, из-за них подобная запись вызывает ошибку. Предложенный вариант пробовал.


ImageSearch, varX, varY, 0, 0, A_ScreenWidth, A_ScreenHeight, *10 *Trans000000 % imgArr[i]

9

Re: AHK: Массив в цикле

Предложение лучше точкой заканчивать, исправьте. Про параметры — я же не экстрасенс, приведите пример в полной записи.

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

10

Re: AHK: Массив в цикле


i := 1
imgArr := ["img\1.bmp"
	, "img\2.bmp"
	, "img\3.bmp"
	, "img\N.bmp"]

loop_1 := 0
While (loop_1 = 0)
	{
	; некоторый код
	loop_2 := 0
	While (loop_2 = 0)
		{
		ImageSearch, varX, varY, 0, 0, A_ScreenWidth, A_ScreenHeight, *10 *Trans000000 % imgArr[i]
		if ErrorLevel = 0
			{
			MsgBox Найдено % i
			loop_2 := 1
			sleep 2000 
			}
		else
			i += 1
			sleep 10
		}
	; некоторый код
	}

Примерно так.

11

Re: AHK: Массив в цикле

KusochekDobra пишет:

Предложенный вариант пробовал

Я про точку здесь, у нас строгие требования к оформлению постов.

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

12

Re: AHK: Массив в цикле

Расстреливают за нарушения?
Поправил.

13

Re: AHK: Массив в цикле

Не-а, просто банят.

ImageSearch, varX, varY, 0, 0, A_ScreenWidth, A_ScreenHeight, % "*10 *Trans000000 "  imgArr[i]
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14 (изменено: KusochekDobra, 2016-04-23 12:00:39)

Re: AHK: Массив в цикле

Ну тогда это не строгие, а суровые правила.
От души.

А разрешите ещё полюбопытствовать, не найдётся ли у Вас в закромах справочного материала с переводом на Русский, более подробно освещающего синтаксис до более или менее недавних технологий? Или, быть может ссылки на него? Был бы Вам очень признателен.

15

Re: AHK: Массив в цикле

Нет, смайлики точки не заменяют.

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

16

Re: AHK: Массив в цикле

Прошу прощения, не специально. Но, что по вопросу? Есть ли достойная литература? А то в поисках хорошего скрипт-софта наткнулся на AHK и буквально очаровался его возможностями, но почему-то за время его существования, знания РУ комьюнити о нём так и остались фрагментированными и не систематизированными в своём описании. Не хочется верить, что столь достойный продукт не пожелали сделать достоянием масс.

17

Re: AHK: Массив в цикле

KusochekDobra, если б один разработчик переводил 1 раз в год всего 1 статью... Мы бы уже "догнали и перегнали". Последние пять лет только одни разговоры. Подайте пример, переведите статью про массивы.

18

Re: AHK: Массив в цикле

ypppu
Я вот больше 100 статей перевёл, это ли не пример? И чё? Где толпы последователей? Так что имею большое сомнение в вашей гипотезе. А вот если за каждый перевод 1000 рублей давать, то переводы, думаю, со всех сторон попрут.

19

Re: AHK: Массив в цикле

ypppu
Пока только вникаю в технологию. Раньше пользовал другой софт, там синтаксис попроще и встроенная среда разработки с его подсветкой и прочее, а так же полноценная справка с базовыми примерами к каждому определению. Плюс оживлённая группа в ВК, где местные Кулибины охотно правят мозг новичкам. Но его давно не обновляют, уже больше года, а прогресс ведь не стоит на месте. Вот в поиске новых возможностей пришёл в ваш дом, надеясь перенять опыт. Автоматизация ведь не просто развязывает руки, это время, которое тратишь с большей пользой, а время - деньги. Я бы и сам поддерживал этот проект материально, как предыдущий, но для начала нужно освоиться и увидеть, что сия затея не будет напрасной. Но за внимание всё же спасибо! На первый взгляд этот ресурс кажется заброшенным, но как видно из общения, это поверхностное мнение весьма и весьма ошибочно.

YMP, отдельное спасибо! Ваш труд неоценим!

20

Re: AHK: Массив в цикле

YMP, не то чтобы совсем не работает. Меня воодушевил Ваш труд, и я призвал завсегдатаев раздела AutoHotkey внести вклад в перевод документации. Дабы подать пример, перевёл в течение года шесть статей. С того момента вопрос перевода поднимался раз пять, и только один человек перевёл-пересказал одну статью.
Всё упирается в мотивацию и востребованность. Не много людей, которым новые возможности и функции нужны настолько, чтобы всерьёз заняться переводом.

21

Re: AHK: Массив в цикле

Здравствуйте. Подскажите пожалуйста, есть ли способ вставить элементы одного массива в другой без прогона его в цикле с поэлементным копированием?

22

Re: AHK: Массив в цикле

Легко:

arr1 := [1, 2]
arr2 := [3, 4]

arr1.InsertAt(2, arr2*)

for k, v in arr1
	MsgBox, % v
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

23

Re: AHK: Массив в цикле

Благодарю. Жаль в справке функциональность массивов не описана. Вероятно, что есть и другие возможности, о которых можно узнать только из гугля по счастливой случайности, или имея предыдущий опыт, чтобы задавать подобные вопросы.

24

Re: AHK: Массив в цикле

Наверное, искали плохо.

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

25

Re: AHK: Массив в цикле

Вернее, без должного упорства. Справка на "забугорном" не особо фокусирует внимание на важных аспектах, ибо всё сливается в один поток малопонятных букв. Ещё раз спасибо за науку.

26

Re: AHK: Массив в цикле

Ну, вот лишняя мотивация, чтобы взяться за ум. Я английский вместе с AHK изучать начал.

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