加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

*有时*在Delphi中分配常量时会出错

发布时间:2020-12-15 03:50:09 所属栏目:大数据 来源:网络整理
导读:我正在使用Delphi 2007包含所有补丁和更新. 我有一个文件,由两个不同的项目使用.在该文件中是一个过程,我将简化如下: procedure MyProcedure;const UniqueValue: integer = 0;begin //some code Inc(UniqueValue); //some more codeend; Inc()命令应该失败,
我正在使用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下,代码类似,它们都编译得很好.

编辑:谢谢你的帮助.在更改了assignable typed constants指令后,我可以在两个项目中获得一致的行为.我今天学了些新东西…

解决方法

在编译器选项中有一个名为“可分配类型常量”的选项.它也可以在代码中使用“{$J}”启用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读