Тема: AHK: Массивы?
Покажите как описываются массивы в с
и как выглядит массив желательно покажите короткий пример с исользованием массивов
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Покажите как описываются массивы в с
и как выглядит массив желательно покажите короткий пример с исользованием массивов
Похожие темы:
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
; создаём массив по имени 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
или так:
Array := [5, 6, 7] MsgBox, % Array.2
А как создать массив с большим количеством переменных?
Или мне нада будет писать километровую строчку, что бы сделать массив из более 1000 переменных?
P.S. из-за использования в AHK эмуляции нажатий клавишь (проще говоря бот работает) кнопка Shift оч плохо работает , по-этому мало использую заглавные буквы и знаки припинания
P.S.S. За то не кто не видит в моих постах лишних запятых ,котрых там быть не должно;)
а как создать массив с большим количеством строк
или это мне нада будеи писать километровую строчку что бы сделать массив из более 1000 переменных
winstan, мы тут пользуемся заглавными буквами, знаками препинания, и стараемся писать грамотно. Отредактируй свой пост.
winstan пишет:а как создать массив с большим количеством строк
или это мне нада будеи писать километровую строчку что бы сделать массив из более 1000 переменныхwinstan, мы тут пользуемся заглавными буквами, знаками препинания, и стараемся писать грамотно. Отредактируй свой пост.
P.S.S. За то не кто не видит в моих постах лишних запятых ,котрых там быть не должно;)
Теперь нормально?
Теперь нормально?
Уже лучше, но пробел ставится не перед запятой, а после.
А как создать массив с большим количеством переменных?
Или мне надо будет писать километровую строчку, что бы сделать массив из более 1000 переменных?
Можно создать изначально пустой массив, затем добавлять в него элементы и присваивать им значения с помощью цикла:
Array := []
Loop 1000 ; добавляем в массив 1000 элементов, которые будут
Array[A_Index] := A_Index ; натуральными числами от 1 до 1000
MsgBox, % Array.500
Вообще-то, к массивам вопрос не имеет отношения. Во-первых, не задана переменная str2. Во-вторых, если хочешь задать переменную var1 как строку, а не число 1023145, нужно писать var1 = 10 2 31 45, или var1 := "10 2 31 45". В-третьих, параметр Delimiters команды Loop, parse должен быть строкой, а у тебя там переменная A_Space.
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
Да,
For key, value in array2
s .= key "=" value "`n"
MsgBox % s
работает, спасибо, но всё еще не понятно почему не работает:
Loop, parse, var1, % A_Space
{
var2 .= array2[A_LoopField] A_Space
}
msgbox %var2%
Вообще-то, к массивам вопрос не имеет отношения. Во-первых, не задана переменная 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
}
Есть еще явные, не относящееся к массивам ошибки?
Переменная str2 задана, содержит строку.
Извини, телепаты в отпуске. Успех кода зависит от её содержания.
Понятно, спасибо.
Телепаты не потребуются.
Здравствуйте, имеется массив с числами. Необходимо перевести все числа массива в строку с его значениями, через запятую. (к примеру arr := [1:"11", 2:"22", 3:"33"], нужно вывести строчку var := "11, 22, 33"). Количество значений в массиве может быть разным, но у меня есть переменная, которая содержит это количество (для моего примера MaxNum := 3). Можете подсказать что-нибудь?
belyankin12
MaxArray := 3
Array := [5, 6, 7]
sText := ""
Loop % MaxArray
{
sText .= Array[A_Index]
}
Msgbox % sText
MandarinKa02, почти то, что нужно, не могли бы ещё запятые проставить между цифрами, выводящимися в stext?
Количество значений в массиве может быть разным, но у меня есть переменная, которая содержит это количество (для моего примера MaxNum := 3). Можете подсказать что-нибудь?
Могу подсказать, что эта переменная не нужна, т. к. у массива существует метод MaxIndex, возвращающий количество элементов в нём.
teadrinker, нужно будет потом посмотреть как его использовать, но сейчас есть цель поважнее, спасибо.
Если через запятую не камельфо, то хотя бы через пробелы помогите разделить пожалуйста.
letters := [1,2,3,4,5]
for k, v in letters
s .= k "" v ","
MsgBox % s
Цель достигнута, всем спасибо.
svoboden, не совсем понимаю алгоритм вашего скрипта.
Что он должен вывести при таком массиве?
letters := [3, 2, 1]
for k, v in letters
s .= k "" v ","
MsgBox % s
Malcev, номер ключа и значение.
А разве такое задание было?
Необходимо перевести все числа массива в строку с его значениями, через запятую. (к примеру arr := [1:"11", 2:"22", 3:"33"], нужно вывести строчку var := "11, 22, 33")
перевести все числа массива в строку с его значениями, через запятую.
Что это может значить? Вроде все правильно я понял, или что может значить слово "перевести"?
svoboden, я же пример дал даже). Это значило, что мне нужно было вывести не ключи и значения вместе, а чисто значения от первого до последнего.
belyankin12, так уберите переменную "k", что сложного?
Так ничего, я же уже выше отписал что цель достигнута.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться