在中间添加新的常量时,如何递增顺序的常量值

时间:2019-04-24 14:03:19

标签: delphi delphi-10.2-tokyo

我有这样的代码

const
value1 = 1;
value2 = 2;
value4 = 3;
.
.
.
valuen = n;

并说我想将value3 = 3;添加到列表中,而不必处理将所有值编辑为n的麻烦。

是否有一种内在的方法或技巧可以使将来变得更容易?

3 个答案:

答案 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 键向下拖动鼠标。

enter image description here

  • 第3步:将部分剪切并粘贴到一行中。

enter image description here

  • 第4步:最后,输入最后一个值。工作在几秒钟内完成。

enter image description here

答案 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并保留value5value6不变。:

const
  value1 = 1;
  value2 = succ(value1);
  value3 = succ(value2);
  value4 = succ(value3);
  value5 = succ(value4);