我有这样的代码
const
value1 = 1;
value2 = 2;
value4 = 3;
.
.
.
valuen = n;
并说我想将value3 = 3;
添加到列表中,而不必处理将所有值编辑为n的麻烦。
是否有一种内在的方法或技巧可以使将来变得更容易?
答案 0 :(得分:4)
使用Delphi编辑器。
步骤1:在正确的位置添加新的const变量:
const
value1 = 1;
value2 = 2;
value3 =
value4 = 3;
value5 = 4;
value6 = 5;
value7 = 6;
第2步:使用 column 列选择快捷方式从3到列表末尾进行选择。 要打开列模式选择,请按 Ctrl + O + C 并标记该块。或者,用 Alt 键向下拖动鼠标。
答案 1 :(得分:3)
否,如果以这种方式定义const的值并且在中间的某个位置插入新值,则无法更新const的值。但是请参见下文:有一些方法可以实现这一目标。
但是您可以改用枚举:
type
ValueType = (
value1 = 1, // 1
value2, // 2
value4, // 3
...
valuen); // n
您可以轻松地添加value3
,随后的所有值也会相应地移动:
type
ValueType = (
value1 = 1, // 1
value2, // 2
value3, // 3
value4, // now: 4
...
valuen); // now: n+1
这也使它们具有类型安全性。当然,如果您真的想将它们用作整数,则必须强制转换:Integer(value3)
(以读取或写入)或使用Ord(value3)
(以读取)。但是您通常会直接将它们用作枚举。您还可以轻松地从中创建集,而使用常量则要困难得多。
当然,如果您真的要使用常量,则可以在这种情况下执行其他操作:
const
value1 = 1; // 1
value2 = value1 + 1; // 2
value4 = value2 + 1; // 3
value5 = value4 + 1; // 4
// etc...
现在,如果要添加value3
,则只需更新几个值:
const
value1 = 1; // 1
value2 = value1 + 1; // 2
value3 = value2 + 1; // new: 3
value4 = value3 + 1; // modified: 4
value5 = value4 + 1; // now: 5
// etc...
这当然是不那么安全的类型,并且需要更多的工作。
对于总是需要整数类型或此类整数的或,-,-和-ed组合且无法修改的API,我将再次使用整数常量:
type
Flags = Cardinal;
const
Flag1 = 1; // 1
Flag2 = Flag1 shl 1; // 2
Flag3 = Flag2 shl 1; // 4
Flag4 = Flag3 shl 1; // 8
// etc.
使用方式:
MyAPIFunc('Hello, world', Flag1 or Flag3 or Flag4);
答案 2 :(得分:2)
您可以使用Succ()
功能。当然,使用枚举更容易理解,但这是您问题的直接答案。
示例:
const
value1 = 1;
value2 = succ(value1);
value4 = succ(succ(value2));
value5 = succ(value4);
value6 = succ(value5);
要插入Value3
,只需更改value4
并保留value5
和value6
不变。:
const
value1 = 1;
value2 = succ(value1);
value3 = succ(value2);
value4 = succ(value3);
value5 = succ(value4);