在Delphi组件编译器中更改事件类型后不会抛出错误

时间:2013-12-14 11:42:44

标签: delphi events

我的自定义Delphi组件在我的许多程序中都有使用。

代码升级后,我更改了我的自定义事件TUvValidateEvent类型(参数计数和类型),但Delphi(我使用XE1或简单的XE)编译器编译我的程序,并不警告我需要更改的依赖项。

如何自动检查以便能够修复它,而无需手动查找所有事件用途?

样品:

Component.pas
//OLD
  TUvValidateEvent = procedure(ErrMsg: UnicodeString) of object; 

//NEW
  TUvValidateEvent = procedure(Sender: TObject; Data: TUvValues; var ErrMsg: UnicodeString) of object;

Code.pas

procedure TMyForm.OnUvValidate(ErrMsg: UnicodeString); //Need to find this automatically.

P.S。更改事件属性名称是我目前使用的修复,但是,我不想这样做。

1 个答案:

答案 0 :(得分:2)

编译器找不到这种类型不匹配的形式,因为不涉及编译器。 .dfm文件中指定的属性仅在运行时解析。当它们被解析时,在运行时也没有类型检查。

所以,你需要自己打猎。您可以使用任何体面的文件搜索工具执行此操作。例如,我会使用grep来执行此操作。或者您可以使用Delphi IDE查找文件工具。或者在您喜欢的文本编辑器中搜索文件。