Copy const array to dynamic array in Delphi Copy const array to dynamic array in Delphi arrays arrays

Copy const array to dynamic array in Delphi


This will copy constAry1 to dynAry.

SetLength(dynAry, Length(constAry1));Move(constAry1[Low(constAry1)], dynAry[Low(dynAry)], SizeOf(constAry1));


function CopyByteArray(const C: array of Byte): TByteDynArray;begin  SetLength(Result, Length(C));  Move(C[Low(C)], Result[0], Length(C));end;procedure TFormMain.Button1Click(Sender: TObject);const  C: array[1..10] of Byte = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);var  D: TByteDynArray;  I: Integer;begin  D := CopyByteArray(C);  for I := Low(D) to High(D) do    OutputDebugString(PChar(Format('%d: %d', [I, D[I]])));end;procedure TFormMain.Button2Click(Sender: TObject);const  C: array[1..10, 1..10] of Byte = (    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10),    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10));var  D: array of TByteDynArray;  I, J: Integer;begin  SetLength(D, Length(C));  for I := 0 to Length(D) - 1 do    D[I] := CopyByteArray(C[Low(C) + I]);  for I := Low(D) to High(D) do    for J := Low(D[I]) to High(D[I]) do      OutputDebugString(PChar(Format('%d[%d]: %d', [I, J, D[I][J]])));end;


From Delphi XE7, the use of string-like operations with arrays is allowed. Then you can declare a constant of a dynamic array directly. For example:

const  KEY: TBytes = [$97, $45, $3b, $3e, $c8, $14, $c9, $e1];