Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Многомерный массив

тут можно задать вопрос по скриптингу
Post Reply
Zampi
Neophyte
Neophyte
Posts: 14
Joined: 07.01.2011 8:13
Location: RU

Многомерный массив

Post by Zampi »

Помогите, а? :oops:

Code: Select all

  var
    dirs : array [1..9] of array [1..3] of integer;
  begin
    dirs[0] := [0,1,2];
    dirs[0] := [0,1,2];
    dirs[1] := [1,1,1];
    dirs[2] := [1,0,2];
    dirs[3] := [-1,1,1];
    dirs[4] := [0,0,2];
    dirs[5] := [1,-1,1];
    dirs[6] := [-1,0,2];
    dirs[7] := [-1,-1,1];
    dirs[8] := [1,-1,2];
[/code]
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

Ты же объявил массив с индексами от 1 до 9 и вложенностью от 1 до 3. А обращаешься при инициализации с нулевого индекса.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
Zampi
Neophyte
Neophyte
Posts: 14
Joined: 07.01.2011 8:13
Location: RU

Post by Zampi »

изменил индексы (сначала вообще без них писал через := [[1,1,1],[..]...[..]];)

но проблема все такая же — в дебаге доходит до: dirs[1] := [0,1,2]; и встает намертво, но без ошибок.
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

Если я щас правильно понял, то PS мал-мал не поддреживает подобные присваивания. Даже заполнение одномерного массива за один заход нормально не выполняется, хотя ошибку при этом всё равно пишет. Подобным образом получалось инициализировать только одномерный динамический массив. Можно сделать следующим образом:

Code: Select all

  dirs : array of array of integer;
begin
  SetLength(dirs, 9);
  dirs[0] := [0,1,2]; 
  dirs[1] := [1,1,1]; 
  dirs[2] := [1,0,2]; 
  dirs[3] := [-1,1,1]; 
  dirs[4] := [0,0,2]; 
  dirs[5] := [1,-1,1]; 
  dirs[6] := [-1,0,2]; 
  dirs[7] := [-1,-1,1]; 
  dirs[8] := [1,-1,2];
Размерность динамического массива можно получить функцией Length(Target: array): Integer;
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
Post Reply