似乎有时Delphi区分大小写 - "覆盖方法应该与祖先的情况相匹配"

RBA*_*RBA 8 delphi compiler-construction delphi-2006

今天我遇到了一个'奇怪'的暗示:

覆盖方法xxxx应该匹配祖先yyyy的情况.

解决方案是在祖先中完全声明方法名称....我相信这是自Delphi.Net编译器以来在编译器中休息的东西......

完全按照祖先的方式声明方法使编译器"无声".在Delphi 2006及其他版本中还有其他"区分大小写"的提示/警告?

Joh*_*ica 15

这是在与第三方代码合作时保护代码的一个提示.
这个提示是在为.net添加Delphi时引入的,因为其他一些.net平台区分大小写.

请注意,提示并不意味着Delphi的任何案例敏感性.
仅在下面的第1点中Delphi本身区分大小写,第2点是Delphi编译器GetProcAddress()在Windows API中调用区分大小写的函数的方式的工件.

Delphi中区分大小写的行为

1 - 注册组件
我不知道区分大小写的任何其他提示,但请注意,当您编写自己的组件并且想要注册它们时,您声明的寄存器功能必须如下所示:

procedure Register;  <<-- Leading capital required.  
Run Code Online (Sandbox Code Playgroud)

如果你不这样做,Delphi将不会添加你的新组件.

2 - 导入外部功能

如David所述,在导入外部函数时,必须保留DLL中使用的确切大小写.

无法禁用单个提示
请注意,您无法禁用特定提示:是否可以禁用特定的Delphi提示?

  • 从技术上讲,Windows API函数GetProcAddress是区分大小写的. (3认同)