Иногда необходимо быстро создать динамический массив с уже установленными значениями. Конечно, для этого потребуется цикл, в котором будут записываться данные для каждого элемента массива. Но что делать, если элементов в массиве over9000 и каждый элемент уже определён? Тогда поможет эта простая функция, которой достаточно указать все значения массива в аргументе, и она создаст динамический массив. Собственно, вот она:
procedure CreateArray(var Arr: Array of Word; const A: Array of Word); var I: Integer; begin SetLength(Arr, High(A)-Low(A)+1); for I:=Low(A) to High(A) do Arr[I] := A[I]; end;
Пример использования:
var MyArr: Array of Word; begin CreateArray(MyArr, [9000, 8999, 8998, 8997, ... , 5, 4, 3, 2, 1, 0]); end;
Разумеется, для приведённого примера можно написать ещё более простой код заполнения массива. И, конечно же, типы массивов можно при необходимости изменить.