Некоторые полезности при работе с динамическими массивами:
Очистить переменную в оперативной памяти
ZeroMemory(@l_synchronizations, SizeOf(Tl_synchronizations));
Процедура SetLength изменяет размер строки, одномерного динамического массива или многомерного динамического массива
1) В корне неверное решение, массив на то и динамически, чтобы не иметь ограничений setlength(analiz_programs_out, 1000); 2) Инициируем массив, по размеру массива данных. Верно до первого условия, при котором какое-либо значение исходного массива отбрасывается. setlength(analiz_programs_out, Length(b)); 3) Не будет работать для разорванного заполения массивов setlength(analiz_film.names, ii + 1); 4) Наиболее правильный из придуманных решений setlength(analiz_film.Genres, Length(analiz_film.Genres) + 1); Добавляем следующий элемент. analiz_film.Genres[Length(analiz_film.Genres) - 1] := database_Genre_Add(b[i, 1], 1);