if 式を機能させるのに問題があります。問題は、横の式が FALSE の値を返す必要がある場合でも、最初の if ステートメントが使用されることです。
たとえば、このスクリプトを実行すると、%X%
2 回実行されるまでに値が 10 になるはずです。(最初は 5、2 番目は 10)。%length%
2 回目の実行では、偶発的に値が 2 になります。
2 回目の実行で表示されるメッセージ ボックスには、「InputVar の長さは 2. - One - 2」 と表示され、19 回目の実行では「InputVar の長さは 2. - One - 19」 と表示されます。次に、実行 20 (22 まで) にヒットすると、「InputVar の長さは 3. - 1 - 20 です」と表示されます。
私は何を間違っていますか?
^1::
X:=0
Y:=0
Loop, 22
{
Y:=++Y
X:=5+X
InputVar:=X
StringLen, length, InputVar
if (%length%<2)
{
MsgBox, 1, Length, The length of InputVar is %length%. - One - %Y%, 2
}
else if (%length%==2)
{
MsgBox, 1, Length, The length of InputVar is %length%. - Two - %Y%, 2
}
else if (%length%>2)
{
MsgBox, 1, Length, The length of InputVar is %length%. - Three - %Y%, 2
}
else
{
MsgBox, 1, Length, The length of InputVar is %length%. - Unknown - %Y%, 2
}
Sleep 500
}
Return
;These are the written numbers I should expect to be paired up with %Y%.
;One - 1
;Two - 2-19
;Three - 20-22