AHK - 数组在 StrSplit 中为空
AHK - Array is empty from StrSplit
脚本从 .ini 文件中读取 IDs。
每个 ID 由单个空格作为分隔符分隔。
将 ID 拆分为子字符串数组后,该数组变为空,但来自 IniRead 的输出变量 Recipients 不是。
some.ini 文件
[IDs]
SampleID1 SampleID2 SampleID3
some.ahk 文件
#Persistent
#SingleInstance, force
SendMode, Input
IniRead, Recipients, some.ini, IDs
StringSplit, aRecipients, Recipients, A_Space
; this code wouldn't work either
; aRecipients := StrSplit(Recipients, A_Space)
F1::
MsgBox % aRecipients[0]
Return
AHK 版本: 1.1.24.01
A_Space
必须被 %%
:
包围
StringSplit, aRecipients, Recipients, %A_Space%
生成的数组不是实际对象,而是伪数组。第一个元素保存元素的数量,其余的是元素。
语法格式为:arrayN
其中 array
是变量名,N
是元素索引,可能是一个变量。
因此要在您的案例中打印它,调用应该是:
string := "The array aRecipients has " . aRecipients0 . " elements:`n"
Loop, %aRecipients0%
{
string := string . aRecipients%A_Index% . "`n"
}
MsgBox %string%
aRecipients := StrSplit(Recipients, A_Space)
会起作用,autohotkey 数组的问题是第一个元素是 [1] 而不是 [0]。所以:
MsgBox % aRecipients[1]
脚本从 .ini 文件中读取 IDs。 每个 ID 由单个空格作为分隔符分隔。 将 ID 拆分为子字符串数组后,该数组变为空,但来自 IniRead 的输出变量 Recipients 不是。
some.ini 文件
[IDs]
SampleID1 SampleID2 SampleID3
some.ahk 文件
#Persistent
#SingleInstance, force
SendMode, Input
IniRead, Recipients, some.ini, IDs
StringSplit, aRecipients, Recipients, A_Space
; this code wouldn't work either
; aRecipients := StrSplit(Recipients, A_Space)
F1::
MsgBox % aRecipients[0]
Return
AHK 版本: 1.1.24.01
A_Space
必须被 %%
:
StringSplit, aRecipients, Recipients, %A_Space%
生成的数组不是实际对象,而是伪数组。第一个元素保存元素的数量,其余的是元素。
语法格式为:arrayN
其中 array
是变量名,N
是元素索引,可能是一个变量。
因此要在您的案例中打印它,调用应该是:
string := "The array aRecipients has " . aRecipients0 . " elements:`n"
Loop, %aRecipients0%
{
string := string . aRecipients%A_Index% . "`n"
}
MsgBox %string%
aRecipients := StrSplit(Recipients, A_Space)
会起作用,autohotkey 数组的问题是第一个元素是 [1] 而不是 [0]。所以:
MsgBox % aRecipients[1]