0

同じID(TLevelと整数)を持つタイプの例

unit UnitType;

interface

type
  TLevel = integer;

  TObj = class
  public
    procedure Test(Level: TLevel);virtual;
  end;

別のオブジェクトがこのオブジェクトから継承する別のユニットがあります(TLevelの代わりに整数に注意してください。ただし、これらは区別されないため、これは問題ではありません)

unit UnitOther;

interface uses UnitType;

type
  TInhObj = class(TObj)
  public
    procedure Test(Level: integer);override;
  end;

すべてが通常どおりにコンパイルされます。

ここで、TLevelタイプを変更して区別できるようにします

TLevel = type integer;

コンパイルしようとしますが、すべてが正常にコンパイルされます。

UnitOtherに移動し、関係のないものを変更します(単に再保存するだけでも)。ユニットUnitOtherに「テストの宣言が以前の宣言と異なる」があります

これは正しいアクションですか、それともDelphiの最新バージョンで修正されたバグですか?(私のものは5です)

4

1 に答える 1

2

Delphi XE を使用していますが、説明どおりに動作します。1 つの回避策は、Build イベントを定期的に実行することです (つまり、コードをコミットする前に)。これは非常に雄弁な解決策ではありませんが、少なくとも、それを使用するすべてのファイルに触れることなく、変更されたタイプを検出できるようになります。

于 2012-07-25T14:11:44.567 に答える