Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение динамического массива, массив обнуляется 
V
    Опции темы
valerchi
Дата 12.8.2018, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Подскажите, пожалуйста в чём дело. Заполняю многомерный динамический массив в цикле повторений. Первый цикл проходит нормально, а в следующих при объявлении "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;........................................

PM MAIL   Вверх
Snowy
Дата 13.8.2018, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Потому что ты меняешь размер всего массива. Поэтому на втором проходе предыдущие ряды схлопываются до 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;

PM MAIL   Вверх
valerchi
Дата 19.8.2018, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Я понял, спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1034 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.