Как мне пояснили на другом сайте проблема в том что у лазаруса два вида массивов с одинаковым синтаксисом динамические и открытые (зачем было так извращаться хз) https://forum.lazarus.freepascal.org/index.php/top...
Такчто необходимо декларировать новый тип если есть такая необходимость
type TDynStringArray = array of String;
procedure Foo(arr: TDynStringArray);