0

具有相同标识(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,它的行为仍然与您描述的完全一样。一种解决方法是定期运行 Build 事件(即在您提交代码之前)。这不是一个非常有说服力的解决方案,但至少它允许检测到更改的类型,而无需触及所有使用它的文件。

于 2012-07-25T14:11:44.567 回答