我正在编写一个解决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
。
错误 =在编译时它很好,但在运行时,当我访问数组时,我有奇怪的值。
答案 0 :(得分:2)
你可以写x := x + [TCongruence.Create(..)]
,它更具可读性。