正确的方法来初始化shorttring数组的数组?

时间:2012-08-10 16:06:06

标签: arrays delphi initialization

在一些继承的遗留代码中,我跟踪了输出中出现的随机垃圾到非初始化数据结构的问题。它被定义为:

MyArray: array of array of ShortString;

当我们从这个结构中读取值时,我们有时会得到明显来自Bad Place的垃圾,并且每次运行它时都会发生变化。

我认为这是初始化这个数组的正确方法:

FillChar (MyArray, SizeOf (MyArray), 0)

然而,当我开始阅读各种网站时,我开始怀疑自己。这是初始化此数组的最佳/正确方法吗? 0是正确的FillValue,还是应该是#32?

2 个答案:

答案 0 :(得分:2)

由于未指定大小,因此这是一个动态数组。 Fillchar不是初始化它们的正确方法。由于它们是托管类型,因此会自动初始化。如果以后要清空阵列,可以使用SetLength(MyArray,0)MyArray := nil

答案 1 :(得分:-2)

Afaik短串不会自动初始化。因此,将setlength设置为正确的大小,例如

setlength(myarray,10,12);

然后将所有字符串的长度设置为0:

for i:=0 to length(myarray)-1 do
  for j:=0 to length(myarray[i])-1
      setlength(myarray[i][j],0);