Динамический массив является то , что это говорит: динамический.
Динамические массивы не имеют фиксированного размера или длины. Вместо этого память для динамического массива перераспределяется, когда вы назначаете значение массиву или передаете его в процедуру SetLength.
декларировать
SetLength(DataArr,Length(DataArr)+1); // Or preallocate as many as you wish to initialize
Используйте SetLength для распределения записей и их инициализации одновременно.
DataArr[0].value1[0] := 2;
Доступ к записи в массиве:
SetLength
В вашем примере не выделено выделение памяти, следовательно, ошибка. И SetLength
работает на динамических массивах, а не на указателях на статические массивы.
Вы можете управлять указателем с помощью GetMem / FreeMem и инициализировать с помощью ZeroMem, но это вызовет проблемы при создании и поддержании кода.