如何在中间添加新值时增加连续的Const值

问题描述 投票:1回答:3

我有这样的代码

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

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

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

delphi delphi-10.2-tokyo
3个回答
4
投票

使用Delphi编辑器。

  • 第1步:在正确的位置添加新的const变量: const value1 = 1; value2 = 2; value3 = value4 = 3; value5 = 4; value6 = 5; value7 = 6;
  • 步骤2:使用列块选择快捷方式从3到列表末尾进行选择。要打开列模式选择,请按Ctrl + O + C并标记该块。或者,使用Alt键向下拖动鼠标。

enter image description here

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

enter image description here

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

enter image description here


3
投票

不,如果以这种方式定义并且在中间某处插入新值,则无法更新consts的值。但请看下面:有办法实现这一目标。

Enumerations

但您可以使用枚举代替:

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)(读取)。但是您通常会直接将它们用作枚举。您也可以轻松地创建这些集合,这对于常量来说要困难得多。

Constants

当然,如果你真的想要使用常量,你可以做其他人在这种情况下做的事情:

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...

这当然不是类型安全的,需要更多的工作。

Parameters that require bitwise operations

对于总是需要这种整数的整数类型或甚至或/和/或组合的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
投票

您可以使用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);
© www.soinside.com 2019 - 2024. All rights reserved.