1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

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

Тема в разделе "Pascal and Delphi", создана пользователем WingmanIX, 1 дек 2013.

  1. WingmanIX

    WingmanIX New Member

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

    Код (Delphi):
    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.
     
  2. gpatron

    gpatron Active Member

    Регистрация:
    13 авг 2009
    Сообщения:
    26
    Симпатии:
    0
    может по другому обращаться к массиву?
    вместо a[2]:=1 попробовать a^[2]:=1
    и еще в объявлении массива убрать размерность:
    вместо arr = array[1..1] of integer;
    указать arr = array of integer;
     
  3. WingmanIX

    WingmanIX New Member

    Регистрация:
    26 авг 2013
    Сообщения:
    3
    Симпатии:
    0
    В итоге, решение моего вопроса - индексировать элементы массива надо через переменную, тогда ошибки не будет:
    Всем спасибо за ответы.
    Код (Delphi):
    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.
     
Загрузка...
Похожие Темы - Не Работает Динамический
  1. seoman2
    Ответов:
    5
    Просмотров:
    110
  2. lemuriez
    Ответов:
    0
    Просмотров:
    100
  3. zehrx
    Ответов:
    5
    Просмотров:
    328
  4. Петручо
    Ответов:
    5
    Просмотров:
    216
  5. zehrx

    Проблема Не работает FileZilla

    zehrx, 19 мар 2017, в разделе: Kali Linux
    Ответов:
    3
    Просмотров:
    129

Поделиться этой страницей