To be honest, I would be more worried about the details of its implementation(meaning AnsiString.Join()).
It turns out that the function can raise an exception, which the documentation is modestly silent about.
But is an exception really necessary? Especially considering that, moreover, not all unwanted cases are covered? For example, System.Copy() just returns an empty string in such cases.
And it's sad to see such ugliness in a function from RTL as allocating memory inside a loop.