2016-08-15 15 views
1

.iniファイルからIDが読み取られます。 各IDは区切り文字として単一のスペースで区切られています。 IDを部分文字列の配列に分割すると、配列は空になりますが、出力変数受信者、IniReadではありません。AHK - 配列がStrSplitから空です。

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

答えて

2
aRecipients := StrSplit(Recipients, A_Space) 

はうまくいく、AutoHotkeyをアレイとの事は最初の要素がであるということである[1]ない[0]。したがって:

MsgBox % aRecipients[1] 
+0

@ 2501で、これは配列ではなく、擬似配列です。したがって、OPのオリジナルコードは、3番目の数字(長さが0番目の要素)を表示する 'MsgBox%aRecipients0'と最初のID(' SampleID1')を示す 'MsgBox%aRecipients1'のように動作します。 – PGilm

+1

@ 2501が説明した**コマンド**の 'StringSplit、OutputArray、InputVar [、区切り文字、OmitChars]'と**関数** 'StrSplit(String [、区切り文字、OmitChars])の間には違いがあります。 'StringSplit'コマンドは本当に"擬似配列 "を' OutputArray'パラメータに返します。関数 'StrSplit()'はarrayを返します。ここで、 "0"要素はfalseで長さは 'array.Length()'です。 OPは彼の 'StrSplit()'にコメント ";このコードはどちらもうまくいきません"とコメントしました。そうだろう。 – Bob

2

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% 
関連する問題