-1

我需要将数组的内容复制到另一种类型的变量中,如下例所示,但我找不到解决方案。注意:我需要这个例程才能在带有 Delphi 10 的 Android 上工作。

有谁知道如何做到这一点?

type TMyType = packed record
  Var_1: Byte;
  Var_2: Byte;
  Var_N: Byte;
end;

Var aa: TMyType;
    vArr: TByte;
begin

  vArr := [1, 2, 3];

  // Copy vArr content to "aa" like this
  aa :=  @vArr;

  // aa.Var_1 = 1;
  // aa.Var_2 = 2;
  // aa.Var_N = 3;
4

1 回答 1

-1

Vitória 的解决方案是我使用的解决方案:

Move(vArr[0], aa, SizeOf(aa));

更正后的代码如下所示:

type TMyType = record
  Var_1: Byte;
  Var_2: Byte;
  Var_N: Byte;
end;

Var aa: TMyType;
    vArr: array of Byte;
begin
   aa.Var_1 := 0;
   aa.Var_2 := 0;
   aa.Var_N := 0;

   vArr := [3, 4, 5];

   // Where "vArr[0]" is the pointer to the first memory location to be copied.
   // SizeOf must to be used for records/data structures and Length for arrays.
   Move(vArr[0], aa, SizeOf(aa));

// Result:
//   aa.Var_1 = 3
//   aa.Var_2 = 4
//   aa.Var_N = 5
于 2017-11-24T18:02:20.450 回答