Por que não posso retornar um array arbitrário de string?
O compilador permite-me fazer o seguinte:
procedure MyProc(const ADynData: array of string);
ou
procedure MyProc(const ADynData: TStringDynArray);
e passar dados arbitrários da seguinte forma:
MyProc(['Data1', 'Data2']);
No entanto, não permitirá
function MyFunc: TStringDynArray;
....
function MyFunc: TStringDynArray;
begin
Result := ['Data1', 'Data2'];
end;
ou
function MyFunc: TStringDynArray;
const
CDynData: array[0..1] of string = ('Data1', 'Data2');
begin
Result := CDynData;
end;
Por que é isso? Não é issotecnicamente a mesma coisa?
Para esses cenários específicos, qual é a maneira recomendada (e mais eficiente) de retornar um array arbitrário de string?