Quote:
lexikos, your`re great!!
...but not infallible.

Expect a bug-fix release some time in the future. I've "submitted" the fix already, but until AutoHotkey is updated, avoid doing things like this:
Code:
f = ; empty...
%f%() ; crashes.
VarSetCapacity(f, 255, Asc("f")) ; too long...
%f%() ; crashes.
Chris wrote:
Similarly, Func%A_Index%() would call the function whose name is stored in the specified array element.
I think this is misleading: "Func" actually forms part of the name. Func%A_Index%() calls Func1(), Func2(), etc. and does not touch the variables (array elements) named Func1, Func2, Func
N...
I'm not sure it is worth mentioning in the help file, but failure can be detected by taking advantage of the difference between standalone assignment and multi-statement expressions:
Code:
f = InvalidFunc
; Standalone assignment: if the dynamic call fails,
; the expression results in a blank value, which is assigned.
result := "FAIL" ; This is overwritten.
result := %f%()
MsgBox %result%
; Multi-statement expression: if the dynamic call fails,
; the second assignment never even occurs.
result := "FAIL", result := %f%()
MsgBox %result%