Just a guess, haven't verified it. 'hello' may be stored as shortstring. Then it can not be cast into a (long)string. (it needs to be converted instead)
In any case, typecasting from/to string => always dangerous.
It can be done, but you have to understand the ref-counting behind. And the types of strings in your case.
About "const aValue: string" => I recommend just "aValue: string".
Yes the "const" may save you 0.01 percent of time. (or whatever amount, in almost all cases it is a tiny amount for strings).
But "const aValue: string" does not mean what you think it does. The time saving is a side effect.
Adding const for string param can crash code, that was valid before.
if you use "const aValue: string" then "a.SetValue(a.FValue);" will be undefined behaviour (might work by accident, might crash, might leak, might produce random results,...)