Delphi动态数组类

时间:2017-05-07 14:51:54

标签: delphi

我正在编写一个解决Congruences(Algebra)系统的程序,我创建了一个名为TCongruence的类,包含构造函数,函数,类函数等。我已声明了一个私有变量:

private
 x: array of TCongruence;

当我尝试填充此数组时,我正在编写此代码:

counter := counter + 1;
SetLength(x, counter);
x[counter-1] := TCongruence.Create(...);

我已经知道这个代码在我花了这3行之后有一段时间了,因为我的原始代码是这样的:

counter := counter + 1;
SetLength(x, counter);
tmp := TCongruence.Create(...);
x[counter-1] := tmp;

当然我有tmp: TCongruence。为什么第二块代码错了? 类是引用所以我认为我可以做类似的事情,因为我没有在tmp上调用Free

错误 =在编译时它很好,但在运行时,当我访问数组时,我有奇怪的值。

1 个答案:

答案 0 :(得分:2)

你可以写x := x + [TCongruence.Create(..)],它更具可读性。