Выполнение 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 проще в любом случае.