如何清除Delphi中Word的多维数组?

How to clear multidimensional array of Word in Delphi?

我正在使用 Delphi 7 并尝试清除(即用零填充)声明数组:

const CONST_MAX_INDEX_AllColumnsSeparators = 3658;
type TAllColumnsSeparators = array[0..CONST_MAX_INDEX_AllColumnsSeparators] of Word;
type ColSeparators = Array[0..11] of TAllColumnsSeparators; // count of columns
   
var All_separators: ColSeparators;

根据此页面,应该有功能 System.Array.Clear - 但似乎这可能适用于比 Delphi v. 7 更新的 IDE。

System.Array.Clear(All_separators, 0, CONST_MAX_INDEX_AllColumnsSeparators+1);

我收到错误未定义的标识符数组。

我想,我可以在手动重置的循环中执行此操作,但我想这会降低性能。

注意:我在一个循环中处理了63个文件,需要在每个循环中重置这个数组,所以这个命令将嵌套在一个循环中。所以我想应该有一些聪明的方法可以在没有另一个控制循环的情况下快速轻松地做到这一点。

请注意,鉴于您的

const
  CONST_MAX_INDEX_AllColumnsSeparators = 3658;

type
  TAllColumnsSeparators = array[0..CONST_MAX_INDEX_AllColumnsSeparators] of Word;
  TColSeparators = array[0..11] of TAllColumnsSeparators;

两种类型都是static arrays,它们是类型。因此,最外层的数组类型也是一个值类型,只包含一个 Word 序列。因此,要用零(零Words)填充这样一个变量,你只需要用零(零Bytes)填充它的内存:

var
  AllSeparators: TColSeparators;
begin
  FillChar(AllSeparators, SizeOf(AllSeparators), 0);