Страница 1 из 1

Передача дин. массива как var параметра и SetLength?

СообщениеДобавлено: 27.11.2010 06:01:28
leo_bsv
Есть кусок кода:
Код: Выделить всё
// Загрузка пиклиста
procedure TXForm.LoadXList(from_table:string; to_col:integer; var _arr: array of integer);
var i:integer;
begin
...
  SetLength(_arr,0);
...
  SetLength(_arr,Length(_arr)+1); // удлиняем массив на 1
...
end;   


Вопрос: почему SetLength вызывает ошибку Error: Type mismatch? Так и должно быть?

Re: Передача дин. массива как var параметра и SetLength?

СообщениеДобавлено: 27.11.2010 09:41:35
Иван Шихалев
Это передача не динамического, а открытого массива получается. Чтобы был динамический надо объявить сначала его тип, а потом использовать:
Код: Выделить всё
type
  TIntArray = array of integer;

procedure Proc(var arr : TIntArray);
.....

Re: Передача дин. массива как var параметра и SetLength?

СообщениеДобавлено: 27.11.2010 11:35:30
leo_bsv
Большое спасибо. :P