Выполнение SetLength в массиве, переданном в proc по ссылке

Конечно, даже я могу это сделать...

var
  testarray : array of string;

setlength(testarray, 5);

но если я хочу стать умным и иметь процедуру, в которую я передаю массив по ссылке, как это, я не могу это сделать!

procedure DoStuffWithArray(var passedarray : array of string);
begin
  setlength(passedarray, 5);
end;

компилятор говорит "несовместимые типы" в одной строке кода в моей proc.

Я могу делать другие вещи в массиве, например, устанавливать значения набора элементов, если я делаю setlength до того, как я вызову proc, но я не могу сделать setlength в моем proc, что и хочу сделать.

Любая помощь очень ценится, спасибо всем.

Ответы

Ответ 1

Типы массивов в качестве параметров должны иметь имя. Итак:

type TStringArray = array of string;
procedure DoStuffWithArray(var passedarray: TStringArray);

Тогда это сработает.

Но если вам нужна группа строк с динамическим размером, вы, вероятно, найдете TStringList проще в любом случае.