Type Mismatch when calling a function

Hello,

I am currently writing Pascal Script code for usage in Inno Setup.
Inno provides a function called FmtMessage to format a string. It is defined as
function FmtMessage(const S: String; const Args: array of String): String;, see also Inno Setup Help (jrsoftware.org).

Now I have an issue calling this method.

When I call it normally like that:
FmtMessage('Some %1 test %2 string %3', [IntToStr(100), 'Somevalue', IntToStr(5)]); it works.

However I wanted to wrap that method in a helper function, because the first string comes from the translation system, and pass the arguments (that Array of String) through that method. When I do that, I get a Type Mismatch runtime error:

function FormatCustomMessage(const messageId: String; const arguments: Array of String): String;
begin
	result := FmtMessage(CustomMessage(messageId), arguments);
end;

I wasn’t sure why that was, but I figured out that the problem is the arguments part.
When I prepare the arguments differently, I also get the Type Mismatch runtime error:

function FormatCustomMessage(): String;
var
	message: String;
	args: Array of String;
begin
	message := 'Some %1 test %2 string %3';
	args := [IntToStr(100), 'Caption', IntToStr(100)];

	result := FmtMessage(message, args); // Type Mismatch error
end;

So the only difference here is, that I assign the Array to a variable and pass that, instead of writing it directly into the FmtMessage call. And that results in a Type Mismatch error, and I don’t understand why.

I also already tried this:

function FormatCustomMessage(): String;
var
	message: String;
	args: Array of String;
begin
	message := 'Some %1 test %2 string %3';

	SetArrayLength(args, 3);
	args[0] := IntToStr(100);
	args[1] := 'Caption';
	args[2] := IntToStr(5);

	result := FmtMessage(message, args); // Type Mismatch error
end;

Same thing. If I write the ['param1', 'param2'] array in the call directly it works, when passing it from a variable with the same type, it doesn’t.

I didn’t really touch pascal for the last 20 years or so, however I have a Delphi background, and not being capable of passing an Array of String through one function to the next makes me feel a bit dumb.

Am I doing something wrong here, or is that a problem with Pascal Script?
I mean, I don’t really need that helper function, as its an installer script and I can put the nested call to FmtMessage() with CustomText() everywhere, but I really like to know what I did wrong here, if that’s the case.

Thanks,

Sebastian