我正在使用带有所有补丁和更新的 Delphi 2007。
我有一个文件被两个不同的项目使用。该文件中有一个过程,我将简化如下:
procedure MyProcedure;
const
UniqueValue: integer = 0;
begin
//some code
Inc(UniqueValue);
//some more code
end;
Inc() 命令应该失败,因为您不能分配给常量。在一个项目中,我得到了一个错误(我称该项目为“准确”)。在另一个项目中,我没有收到任何错误(我将其称为“Bogus”)。我也没有收到任何警告。我不明白为什么编译器会让这个不正确的代码通过。
这是我在 Bogus 项目中尝试过的:
1 - 引入一个明显的错误,比如在一行中间输入“slkdjflskdjf”
结果:我得到一个错误,这证明它确实在尝试编译这个文件。
2 - 删除.DCU,并重建项目
结果:.DCU 重新生成,再次证明该项目确实在编译此错误代码。
有没有人想过为什么会发生这种行为?更具体地说,为什么它会发生在一个项目中而不是另一个项目中?是否有一些模糊的编译器选项允许分配给常量?
最后一点:两个项目都是从 Delphi 5 转换而来的。在具有相似代码的 Delphi 5 下,它们都可以正常编译。
编辑:感谢您的所有帮助。更改可分配类型常量指令后,我可以在两个项目中获得一致的行为。我今天学了些新东西...