Arrays AHK-StrSplit中的数组为空

Arrays AHK-StrSplit中的数组为空,arrays,split,autohotkey,strsplit,Arrays,Split,Autohotkey,Strsplit,脚本从.ini文件读取IDs。 每个ID之间用单个空格分隔,作为delimeter。 将ID拆分为一个子字符串数组后,该数组将变为空,尽管输出变量Recipients,fromIniRead不是空的 some.ini文件 [IDs] SampleID1 SampleID2 SampleID3 #Persistent #SingleInstance, force SendMode, Input IniRead, Recipients, some.ini, IDs StringSplit, a

脚本从.ini文件读取IDs。 每个ID之间用单个空格分隔,作为delimeter。 将ID拆分为一个子字符串数组后,该数组将变为空,尽管输出变量Recipients,fromIniRead不是空的

some.ini文件

[IDs]
SampleID1 SampleID2 SampleID3
#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
some.ahk文件

[IDs]
SampleID1 SampleID2 SampleID3
#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_空间
必须由
%%
包围:

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%
如果可以的话,自动热键数组的第一个元素是[1]而不是[0]。因此:

MsgBox % aRecipients[1]

根据@2501,它是一个伪数组,而不是数组。因此,OP的原始代码是这样工作的:
MsgBox%aRecipients0
显示数字3(第0个元素是长度),而
MsgBox%aRecipients1
显示第一个ID(
SampleID1
)。命令
StringSplit、OutputArray、InputVar[、分隔符、省略字符]之间存在差异
是@2501解释的,函数
StrSplit(字符串[,分隔符,省略字符])
。虽然
StringSplit
命令确实将“伪数组”返回到
OutputArray
参数,但函数
StrSplit()
返回数组,其中“第零”元素为false,长度为
array.length()
。OP注释掉了他的
StrSplit()
,并指出“这段代码也不起作用”。会的。