Delphi XE2 ではコンパイルできますが、XE3 ではコンパイルできない簡単なコードがありますが、その理由はわかりません。問題のあるコードを少し減らしました。Delphi の意見で何が問題なのか知りたいです。Delphi XE 2 でこのユニットを含むプロジェクトをコンパイルしようとすると正常に動作しますが、Delphi XE3 (試用版) では、「[dcc32 エラー] AffineTransform.pas(26): E2382 インスタンス変数を使用してコンストラクターを呼び出すことはできません」というメッセージが表示されます。ここで私が知っている唯一の「変わった」ことは、古い学校の「オブジェクト」型の使用です。この場合、コンストラクターは実際のオブジェクト (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.