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


Автор: valerchi 12.8.2018, 12:22
Подскажите, пожалуйста в чём дело. Заполняю многомерный динамический массив в цикле повторений. Первый цикл проходит нормально, а в следующих при объявлении "setlength(mas0,ii+1,i+1);", - массив обнуляется
Код

............................
ii:=-1;
x:=-1;
repeat
g:='';
inc(x);
g:=memo1.lines.Strings[x];
i:=-1;
inc(ii);
for j:=0 to length(g) do
begin
case g[j] of
'а': begin
inc(i);
setlength(mas0,ii+1,i+1); // здесь обнуляется
mas0[ii,i]:=1;
end;
'б': begin
inc(i);
setlength(mas0,ii+1,i+1); //  здесь обнуляется
mas0[ii,i]:=2;
end;........................................

Автор: Snowy 13.8.2018, 11:19
Потому что ты меняешь размер всего массива. Поэтому на втором проходе предыдущие ряды схлопываются до 1 элемента.
Меняй размер рядов по отдельности:
Код
var
  mas0: array of array of integer;

.......

  inc(ii);
  SetLength(mas0, ii+1);
  for j:= 1 to length(g) do
  begin
    case g[j] of
     'а': begin
          inc(i);
          setlength(mas0[ii],i+1);
          mas0[ii,i]:=1;
          end;
     'б': begin
          inc(i);
          setlength(mas0[ii], i+1);
          mas0[ii,i]:=2;
          end;
     end;
  end;

Автор: valerchi 19.8.2018, 17:03
Я понял, спасибо.

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