Не Работает Динамический Массив Delphi

WingmanIX

New Member
26.08.2013
3
0
#1
Добрый день. Проблема вот в чем. Создаю динамический массив с помощью GetMem; при попытке обратиться к любому его элементу, кроме 1-ого, появляется ошибка Constant expression violates subrange bounds. Что делать?

Код:
implementation
{$R *.dfm}
{$R-}

procedure TForm1.FormCreate(Sender: TObject);
type
arr = array[1..1] of integer; 
p_arr = ^arr;
var
a:p_arr;
size:integer;
begin
size:=sizeOf(integer);
GetMem(a,5*size);

a[2]:=1;//ошибка: Constant expression violates subrange bounds

FreeMem(a,5*size);

end;

end.
 

gpatron

Active Member
13.08.2009
26
0
36
Тирасполь
#2
может по другому обращаться к массиву?
вместо a[2]:=1 попробовать a^[2]:=1
и еще в объявлении массива убрать размерность:
вместо arr = array[1..1] of integer;
указать arr = array of integer;
 

WingmanIX

New Member
26.08.2013
3
0
#3
В итоге, решение моего вопроса - индексировать элементы массива надо через переменную, тогда ошибки не будет:
Всем спасибо за ответы.
Код:
implementation
{$R *.dfm}
{$R-}


procedure TForm1.FormCreate(Sender: TObject);
type
arr = array[1..1] of integer; 
p_arr = ^arr;
var
a:p_arr;
size,i:integer;
begin
size:=sizeOf(integer);
GetMem(a,5*size);

i:=2;
a[i]:=1;//Теперь ошибки нет.

FreeMem(a,5*size);

end;

end.