; Declare the window_title_array
window_title_array%1% = 3270 Display A - A
window_title_array%2% = 3270 Display A - B
window_title_array%3% = 3270 Display A - C
window_title_array%4% = 3270 Display A - D
window_title_array%5% = 3270 Display A - E
window_title_array%6% = 3270 Display A - F
counter := 1
my_string := window_title_array%counter%
MsgBox, %my_string%
如何使用计数器变量从数组中获取字符串?我尝试counter = 1
和counter := 1
。他们都无法访问该阵列。我不确定错误在哪里。谢谢!
PS:我的版本已经过时了 - 版本1.0.47.06
答案 0 :(得分:2)
我相信你是如何创建阵列的。通过在数组索引周围放置百分号,您实际上是在说您要使用第一个文件级输入参数(在使用%1%的情况下)。这很可能是空白的,所以它最终寻找的是一个名为" window_title_array"
的变量取出百分数。你应该用这个:
window_title_array1 = 3270 Display A - A
window_title_array2 = 3270 Display A - B
window_title_array3 = 3270 Display A - C
window_title_array4 = 3270 Display A - D
window_title_array5 = 3270 Display A - E
window_title_array6 = 3270 Display A - F
而不是这个:
window_title_array%1% = 3270 Display A - A
window_title_array%2% = 3270 Display A - B
window_title_array%3% = 3270 Display A - C
window_title_array%4% = 3270 Display A - D
window_title_array%5% = 3270 Display A - E
window_title_array%6% = 3270 Display A - F
然后如果你想用计数器变量引用某些东西,......(查看你的代码)......你会像你一样完成它。
请注意,这不是AHK中的本机数组。但是如果您有旧版本,则可能无法使用本机阵列。这就是阵列在AHK中长时间完成的方式。
此外,我处理此问题的另一种方法是创建一个"内置"计数器/长度变量并使用它来动态编号我的数组。然后,这可以很容易地在数组循环等中引用。并注意没有数组索引的手动编码,这意味着您可以添加更多或插入它们而无需重新编号。我经常做结构数组,下面是一个简单的例子......
myArr0 = 0 ; At the end, this will hold the count of the array
myArr0++
myArr%myArr0%_firstName = John
myArr%myArr0%_lastName = Smith
myArr0++
myArr%myArr0%_firstName = Bill
myArr%myArr0%_lastName = Jones
myNames =
; assemble a list of names, a simple example
loop, %myArr0%
{
myNames := myNames . myArr%a_index%_firstName . ", "
}
我对计数器使用< array name> 0语法,因为它与stringsplit命令输出的语法相同。
答案 1 :(得分:1)
问题不在counter
变量中,您的两个版本都能正常运行,但我建议您始终只在AutoHotkey中使用:=
。您可以将表达式与:=
一起使用,如果您需要将文本分配给变量,则只需将""
与a := "Some text here"
一起包含在文本中""
。但要为变量分配表达式的结果,请不要使用a:= 1+1
,例如=
。尽量不要在AutoHotkey中使用window_title_array := [] ; We create array here
; we are adding items to array.
window_title_array[1] := "3270 Display A - A"
window_title_array[2] := "3270 Display A - B"
window_title_array[3] := "3270 Display A - C"
window_title_array[4] := "3270 Display A - D"
window_title_array[5] := "3270 Display A - E"
window_title_array[6] := "3270 Display A - F"
counter := 1
my_string := window_title_array[counter] ; here we need [] to indicate that we are using array cell and variable incide it does not needs to be enclosed in %%
MsgBox, %my_string%
进行分配。
查看我的代码中的注释和我的代码下面的注释以获得解释。这是工作代码:
{{1}}
在这里,您可以获得有关数组和AutoHotkey http://ahkscript.org/docs/Objects.htm#Usage的更多信息 请记住,AutoHotkey中的所有数组都是对象 你也可以声明数组并在一个字符串中添加值。更多关于它在上面给你的链接。
此外,始终使用来自http://ahkscript.org/的AutoHotkey及其文档(当前最新版本,新官方网站)! Autohotkey.com上的AutoHotkey及其文档已过时,使用它们可能会遇到一些问题!