Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Динамический массив


Автор: Гость_Vasya 24.6.2005, 09:03
Здраствуйте!

Тут такой вопрос. Предположим, имеем :

Код

TName = record
      fName: string[50];
      lName: string[50];
    end;

procedure Proc(var n: array of TName);
begin
  SetLength(n, 10); - почему так сделать нельзя?
end;

..... а так можно:

Код

procedure Proc;
var
  n: array of TName;
begin
  SetLength(n, 10);
end;

Спасибо!

Автор: Rrader 24.6.2005, 09:48
Потому что в случае:
Код

Procedure Proc(var n: array of TName);

мы имеем n - открытый массив, а открытым массивам компилятор не разрешает выделять память, так как она должна быть уже выделена при передаче в параметр.

Автор: Rennigth 24.6.2005, 10:34
Код

type
  TNameArray = array of TName;
.....
procedure Proc(var n: TNameArray);
begin
  SetLength(n, 10); 
end;



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)