Как увеличить последовательные значения Const при добавлении нового в середине - PullRequest
1 голос
/ 24 апреля 2019

У меня есть такой код

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

и я хочу добавить value3 = 3; в список без необходимости редактировать все значения в n.

* 1006Есть ли внутренний метод или хитрость, которую можно сделать, чтобы облегчить это в будущем?

Ответы [ 3 ]

4 голосов
/ 25 апреля 2019

Используйте редактор 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 голосов
/ 24 апреля 2019

Нет, невозможно обновить значения констант, если они определены таким образом и если новое значение вставлено где-то посередине. Но смотрите ниже: есть способы достичь этого.

Перечисления

Но вместо этого вы можете использовать перечисление:

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

Это, конечно, менее безопасно и требует больше работы.

Параметры, требующие побитовых операций

Для 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 голосов
/ 25 апреля 2019

Вы можете использовать функцию Succ().Конечно, использование перечислений легче понять, но это прямой ответ на ваш вопрос.

Пример:

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

Чтобы вставить Value3, вам нужно только изменить value4 и оставьте value5 и value6 без изменений.: * 10101 *

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