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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение leo_bsv » 27.11.2010 06:01:28

Есть кусок кода:
Код: Выделить всё
// Загрузка пиклиста
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? Так и должно быть?
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

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

Сообщение Иван Шихалев » 27.11.2010 09:41:35

Это передача не динамического, а открытого массива получается. Чтобы был динамический надо объявить сначала его тип, а потом использовать:
Код: Выделить всё
type
  TIntArray = array of integer;

procedure Proc(var arr : TIntArray);
.....
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

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

Сообщение leo_bsv » 27.11.2010 11:35:30

Большое спасибо. :P
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru