10 Stimmen

Kopieren eines konstanten Arrays in ein dynamisches Array in Delphi

Ich habe eine feste konstante Anordnung

constAry1: array [1..10] of byte = (1,2,3,4,5,6,7,8,9,10);

und eine dynamische Anordnung

dynAry1: array of byte;

Wie kopiert man am einfachsten die Werte aus constAry1 à dynAry1 ?

Ändert sich das, wenn Sie ein konstantes Array von Arrays (mehrdimensional) haben?

constArys: array [1..10] of array [1..10] of byte = . . . . .

26voto

gabr Punkte 26255

Dies kopiert constAry1 à dynAry .

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

12voto

Ondrej Kelle Punkte 36511
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;

2voto

vfbb Punkte 237

Ab Delphi XE7 ist die Verwendung von String-ähnlichen Operationen mit Arrays erlaubt. Dann können Sie eine Konstante eines dynamischen Arrays direkt deklarieren. Zum Beispiel:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X