而不是我只能打字
const clicks : Integer = 1;
我必须输入
{$J+}
const clicks : Integer = 1;
{$J-}
我认为在编译器选项菜单中选中该框要容易得多..但我想确保它不会在长期错误中伤害我..并且想知道为什么它会被禁用(未选中) ?
非常感谢您对此提供的帮助,谢谢大家。
最佳答案
自 Delphi 2 发布以来,默认情况下已禁用它们,IIRC。实际的选项是在 Delphi 1 的对话框中提供的,我似乎记得在下一版本中默认值从启用更改为禁用的大惊小怪。不过已经过去很长一段时间了,所以当默认值被逆转时,我可能会落后一步;可能是D3。可赋值常量是从旧的 Turbo Pascal 时代遗留下来的,并且是缺乏实际静态变量类型的替代品。它们被更好的解决方案所取代,即初始化(全局)变量(请参阅 Declaring Variables
)。
如果您确实需要使用可写常量,则应该仅在必要的最小(最有限)范围内这样做,而不是更改全局设置。常量应该尽可能准确(常量)。使用可写常量的典型原因是,当您需要某个范围(例如过程、函数或单元)内的局部变量需要在调用之间保留其值时,通常有更好的方法来做到这一点。一些选项是对象字段(成员变量)或有限范围初始化变量(在受限区域中可见的变量,例如在单元的实现部分中,并初始化为起始值)。
可赋值常量意味着该值可以在运行时更改,并且实际上很少有用。真正的常数就是常数,并且不应该允许改变。
对于类型化常量来说也是如此;应该有实际需要使用它们,除非您存储常量数组、记录、指针或过程类型,否则很少需要使用它们,如这些声明中所示:
const
TIntLookupArray: array[0..1] of Integer = (1, 2);
TErrorMsgs: array[0..1] of string = ('Invalid input', 'Invalid sequence');
您首先使用类型化常量有什么原因吗?如果你只使用
就不会出现这个问题const clicks = 1;
并让编译器决定正确的类型。如果你想确保它的大小是Integer
,只需使用像
const clicks = Integer(1);
请参阅Delphi documentation docwiki了解更多信息。
关于delphi - 为什么默认情况下我的 Delphi 7 中禁用可分配类型常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843202/