我有一段简单的代码,可以在 Delphi XE2 中编译,但不能在 XE3 中编译,我不知道为什么。我已将有问题的代码减少到一点点,并想知道 Delphi 认为它有什么问题。尝试在 Delphi XE 2 中编译包含该单元的项目工作正常,但在 Delphi XE3(试用版)中,它给出“[dcc32 Error] AffineTransform.pas(26): E2382 Cannot call constructors using instance variables”。我在这里知道的唯一“古怪”的事情是使用老式的“对象”类型,其中构造函数与真实对象(基于 TObject 的类实例)中的构造函数并不完全相同。
如果我将此对象中的“构造函数”替换为“过程”,那么它可以编译,但是为什么会这样,在我的代码中这是一个可以做的改变吗,即它是否对功能?
unit AffineTransform;
interface
type
{ Rectangular area. }
TCoordRect = object
public
Left, Top, Right, Bottom: Real;
constructor CreatePos(ALeft, ATop, ARight, ABottom: Real);
procedure Include(AX, AY: Real);
end;
implementation
constructor TCoordRect.CreatePos(ALeft, ATop, ARight, ABottom: Real);
begin
Left := ALeft;
Top := ATop;
Right := ARight;
Bottom := ABottom;
end;
procedure TCoordRect.Include(AX, AY: Real);
begin
CreatePos(AX, AY, AX, AY)
end;
end.