1 (изменено: winstan, 2011-05-15 20:27:32)

Тема: AHK: Массивы?

Покажите как описываются массивы в с
и как выглядит массив желательно покажите короткий пример с исользованием массивов

2

Re: AHK: Массивы?

Похожие темы:
http://forum.script-coding.com/viewtopic.php?id=5196
http://forum.script-coding.com/viewtopic.php?id=4796
http://forum.script-coding.com/viewtopic.php?id=3809
http://forum.script-coding.com/viewtopic.php?id=3360
http://forum.script-coding.com/viewtopic.php?id=2660
http://forum.script-coding.com/viewtopic.php?id=1428
http://forum.script-coding.com/viewtopic.php?id=1254
http://forum.script-coding.com/viewtopic.php?id=517

3

Re: AHK: Массивы?

; создаём массив по имени Array
Array := Object("Key1", "Value1", "Key2", "Value2")

MsgBox, % Array.Key1
; или
MsgBox, % Array["Key1"]

или:

Array := {Key1: "Value1", Key2: "Value2"}

For k, v in Array   ; последовательный перебор членов массива
{
   MsgBox, % Array[k]
   MsgBox, % v
}

или так:

Array := [5, 6, 7]
MsgBox, % Array.2

или:

Array := Array("Red", "Green", "Blue")

for i in Array
   MsgBox, % Array[i]
; или
for i,n in Array
   MsgBox, % n
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4 (изменено: winstan, 2011-05-16 19:51:07)

Re: AHK: Массивы?

teadrinker пишет:

или так:

Array := [5, 6, 7]
MsgBox, % Array.2

А как создать массив с большим количеством переменных?
Или мне нада будет писать километровую строчку, что бы сделать массив из более 1000 переменных?

P.S. из-за использования в AHK эмуляции нажатий клавишь (проще говоря бот работает) кнопка Shift оч плохо работает , по-этому мало использую заглавные буквы и знаки припинания

P.S.S. За то не кто не видит в моих постах лишних запятых ,котрых там быть не должно;)

5

Re: AHK: Массивы?

winstan пишет:

а как создать массив с большим количеством строк
или это мне нада будеи писать километровую строчку что бы сделать массив из более 1000 переменных

winstan, мы тут пользуемся заглавными буквами, знаками препинания, и стараемся писать грамотно. Отредактируй свой пост.

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

6

Re: AHK: Массивы?

teadrinker пишет:
winstan пишет:

а как создать массив с большим количеством строк
или это мне нада будеи писать километровую строчку что бы сделать массив из более 1000 переменных

winstan, мы тут пользуемся заглавными буквами, знаками препинания, и стараемся писать грамотно. Отредактируй свой пост.

winstan пишет:

P.S.S. За то не кто не видит в моих постах лишних запятых ,котрых там быть не должно;)

Теперь нормально?

7

Re: AHK: Массивы?

Теперь нормально?

Уже лучше, но пробел ставится не перед запятой, а после.

winstan пишет:

А как создать массив с большим количеством переменных?
Или мне надо будет писать километровую строчку, что бы сделать массив из более 1000 переменных?

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

Array := []

Loop 1000           ; добавляем в массив 1000 элементов, которые будут
   Array[A_Index] := A_Index    ; натуральными числами от 1 до 1000
   
MsgBox, % Array.500
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Массивы?

Вообще-то, к массивам вопрос не имеет отношения. Во-первых, не задана переменная str2. Во-вторых, если хочешь задать переменную var1 как строку, а не число 1023145, нужно писать var1 = 10 2 31 45, или var1 := "10 2 31 45". В-третьих, параметр Delimiters команды Loop, parse должен быть строкой, а у тебя там переменная A_Space.

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

9

Re: AHK: Массивы?


str:="54321"
array:=[]

Loop, Parse, str
array[A_Index]:=A_LoopField

var1:="5 4 3 2 1 6" ; номер ячейки массива должен быть существующим, так как ячейки нет, то и содержимое её не будет добавленно - последний случай с цифрой 6

Loop, Parse, var1, % A_Space ; здесь была ошибка - переменная A_Space была подставленна как текст "A_Space"
var2 .=array[A_LoopField] A_Space

msgbox % "Длина строки в переменной var2, " StrLen(var2) "`nпробел был добавлен, а значение`nнесуществующей ячейки массива нет"

msgbox % var2 ; переменная неожиданно ...

array2:=array ; не знаю насколько это верно, но работает :|

; пример из справки - перечисление всех ключей и их значений

For key, value in array2
   s .= key "=" value "`n"
MsgBox % s

10 (изменено: creature.ws, 2011-06-28 01:51:35)

Re: AHK: Массивы?

Да,

For key, value in array2
   s .= key "=" value "`n"
MsgBox % s

работает, спасибо, но всё еще не понятно почему не работает:

Loop, parse, var1, % A_Space
{
 var2 .= array2[A_LoopField] A_Space                                   
}
msgbox %var2%
teadrinker пишет:

Вообще-то, к массивам вопрос не имеет отношения. Во-первых, не задана переменная str2. Во-вторых, если хочешь задать переменную var1 как строку, а не число 1023145, нужно писать var1 = 10 2 31 45, или var1 := "10 2 31 45". В-третьих, параметр Delimiters команды Loop, parse должен быть строкой, а у тебя там переменная A_Space.

Переменная str2 задана, содержит строку. Переменная var1 содержит строку, при изменении Delimiters с A_Space на %A_Space% var2 всё еще остаётся пустой.

/add
В фрагменте:


Loop, parse, var1, % A_Space
{
 var2 .= array2[A_LoopField] A_Space

}

Есть еще явные, не относящееся к массивам ошибки?

11

Re: AHK: Массивы?

creature.ws пишет:

Переменная str2 задана, содержит строку.

Извини, телепаты в отпуске. Успех кода зависит от её содержания.

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

12 (изменено: creature.ws, 2013-01-12 09:04:47)

Re: AHK: Массивы?

Понятно, спасибо.
Телепаты не потребуются.

13 (изменено: belyankin12, 2017-07-30 16:35:32)

Re: AHK: Массивы?

Здравствуйте, имеется массив с числами. Необходимо перевести все числа массива в строку с его значениями, через запятую. (к примеру arr := [1:"11", 2:"22", 3:"33"], нужно вывести строчку var := "11, 22, 33"). Количество значений в массиве может быть разным, но у меня есть переменная, которая содержит это количество (для моего примера MaxNum := 3). Можете подсказать что-нибудь?

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

14 (изменено: MandarinKa02, 2017-07-30 16:49:45)

Re: AHK: Массивы?

belyankin12


MaxArray := 3
Array := [5, 6, 7]
sText := ""
Loop % MaxArray
{
	sText .= Array[A_Index]
}
Msgbox % sText

15 (изменено: belyankin12, 2017-07-30 16:59:42)

Re: AHK: Массивы?

MandarinKa02, почти то, что нужно, не могли бы ещё запятые проставить между цифрами, выводящимися в stext?

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

16 (изменено: teadrinker, 2017-07-30 17:05:39)

Re: AHK: Массивы?

belyankin12 пишет:

Количество значений в массиве может быть разным, но у меня есть переменная, которая содержит это количество (для моего примера MaxNum := 3). Можете подсказать что-нибудь?

Могу подсказать, что эта переменная не нужна, т. к. у массива существует метод MaxIndex, возвращающий количество элементов в нём.

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

17

Re: AHK: Массивы?

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

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

18

Re: AHK: Массивы?

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

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

19 (изменено: svoboden, 2017-10-23 02:55:48)

Re: AHK: Массивы?

letters := [1,2,3,4,5]
for k, v in letters
    s .= k "" v ","
MsgBox % s

20

Re: AHK: Массивы?

Цель достигнута, всем спасибо.

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

21

Re: AHK: Массивы?

svoboden, не совсем понимаю алгоритм вашего скрипта.
Что он должен вывести при таком массиве?

letters := [3, 2, 1]
for k, v in letters
    s .= k "" v ","
MsgBox % s

22

Re: AHK: Массивы?

Malcev, номер ключа и значение.

23

Re: AHK: Массивы?

А разве такое задание было?

belyankin12 пишет:

Необходимо перевести все числа массива в строку с его значениями, через запятую. (к примеру arr := [1:"11", 2:"22", 3:"33"], нужно вывести строчку var := "11, 22, 33")

24 (изменено: svoboden, 2017-07-30 21:00:31)

Re: AHK: Массивы?

belyankin12 пишет:

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

Что это может значить? Вроде все правильно я понял, или что может значить слово "перевести"?

25

Re: AHK: Массивы?

svoboden, я же пример дал даже). Это значило, что мне нужно было вывести не ключи и значения вместе, а чисто значения от первого до последнего.

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

26

Re: AHK: Массивы?

belyankin12, так уберите переменную "k", что сложного?

27

Re: AHK: Массивы?

Так ничего, я же уже выше отписал что цель достигнута.

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