1

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

MyArray: array of array of ShortString;

当我们从这个结构中读取值时,我们有时会得到明显来自坏地方的垃圾,并且每次运行它都会改变。

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

FillChar (MyArray, SizeOf (MyArray), 0)

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

4

2 回答 2

2

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

于 2012-08-10T16:11:56.780 回答
-2

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

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);
于 2012-08-10T17:23:41.313 回答