OK, thats a surprisingly helpful comment Thaddy. And I thank you !
I assumed because I was telling the compiler all about what the array was to hold that it would then be static. After all, it had everything it needs to fill in that array at compile time. But, as Thaddy says, its Dynamic. So, that opens up other possibilities -
type TFPColorArray = array of TFPColor;
var
PlotColours : TFPColorArray;
....
PlotColours := TFPColorArray.Create(colRed, colDkGreen, colBlue, colMaroon, colMagenta);
And that compiles and runs quite happily.
I did have to experiment a bit to prove to myself that the array is Dynamic, try calling setlength() on it ....
I find it strange how the original form of initialization I tried, the one that fails with typed constants, is not documented anywhere where I can find it. I am talking about, eg -
var
x:array[0..3] of integer =(1,2,3,4); // Static
y:array of integer =(1,2,3,4); // dynamic
While I did not quite understand the process (I do now) its still a very convenient way to work. Is it frowned upon, not officially supported, whatever ? I'd like to add something to the wiki ....
Davo