従来の ASP 関数で、次のコードに示すように別の関数内でループを実行すると、スタック オーバーフロー エラーが発生します。
Function shift(x,y)
shift = x
For i = 1 to y
shift = shift*2
Next
End Function
Function translate_url(iVal)
sAlpha = "abcdefghijklmnopqrstuvwxyz-_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
doWrite = False
iBase = 63 'DO NOT CHANGE
For i = 4 to 0 step -1
iPos = (iVal and shift(iBase, i*6))/shift(1, i*6)
If iPos Then doWrite = True
If doWrite Then translate_url = translate_url & Mid(sAlpha, iPos + 1,1)
Next
End Function
arr = Split("1,2,3,4,5,6,7,8,9,0",",")
For Each i In arr
response.Write(translate_url(arr(i)))
next
関数の外側のループを削除すると、エラーは発生しません。例えば:
response.Write(translate_url(arr(1)))
「c」を返します。
コードが配列を下に流れ、関数に従って対応する値を返すようにするために何をする必要がありますか?