如何初始化静态数组?

时间:2011-07-12 16:48:16

标签: delphi

假设我有这个声明:

TYPE
 RDisk= packed record
   R2: array[1..1024] of Byte;
   etc
   etc
  end;

如何使用如下的常量声明将R2初始化为零:

CONST
 Disk: RDisk= 
   (
    R: ??
   );

这与Record in record (Cannot initialize)

有关

3 个答案:

答案 0 :(得分:4)

省略您想要归零的字段:

type
 RDisk= packed record
   R2: array[1..512] of Byte;
   I: Integer;
   D: Double;
   R3: array[1..512] of Byte;
  end;

const
 Disk: RDisk=
   (
    I: 3;
    D: 2.5;
   );

,或者

const
 Disk: RDisk=
   (
   );


我不知道它为什么有用,它不太适合Record Constants'文档。

答案 1 :(得分:3)

您可以声明R2类型的常量并将其初始化为所有零,如下所示:

const
  zeros: R2 = (0, 0, 0, ...);

数组长度为1024,因此您必须在该列表中指定所有1024个以逗号分隔的值。

答案 2 :(得分:2)

您可以使用此

将数组初始化为零
ZeroMemory(@R2[0],length(R2));

或者

FillChar(R2[0],length(R2),0);