Сообщение от
ВладОвен
Да. Этот способ тоже хорош. Но в этом проекте я решил пока от этого отказаться.
Потому, что последовательность очень длинная - на 100 шагов. Я просто боюсь, что потом запутаюсь в последовательности действий.
Всё таки: числа дают последовательность перечисления, а слова - нет.
Т.е. мы всегда знаем, что после шага 56 идет шаг 57, а потом и шаг 58.
И наоборот, если со словами: после startZeroOperation идет waitCountOffset? Или waitCoeffView? Или, может быть, waitJeater? А, вспомнил! Потом идет goStableFlow! (но это не точно...).
Но с числами есть недостаток: если понадобится вставить доп.промежуточный шаг в будущем, то придется сдвигать все числа вручную. И это неудобно.
Наверное, оптимально делать всё же перечисление, но такого формата:
10_startZeroOperation,
20_waitCountOffset,
30_waitCoeffView,
40_waitJeater,
50_goStableFlow.
В этом случае и понятна последовательность шагов (за счет чисел), и смысл шага (за счет слов), и вставить доп.промежуточный шаг можно за счет предварительного пропуска чисел (например, 35_waitSmokeDocsOwen).
Я конечно не знаю как у вас организована программа, но я в таких случаях делаю так:
Если мне надо добавить шаг, я просто вставляю его в нужное место перечисления и перенумеровываю значения заново (в екселе - делается за 1 сек если разделители - табуляция):
Например:
Код:
Было
TYPE enStateMotor : (
gc_iMotorStopped := 0 ,
gc_iMotorStopping := 1 ,
gc_iMotorBlocked := 2 ,
gc_iMotorErrStart := 3 ,
gc_iMotorWork := 4 ,
gc_iMotorStarting := 5 ,
gc_iMotorNoFeedback := 6
);
END_TYPE
Стало:
TYPE enStateMotor : (
gc_iMotorStopped := 0 ,
gc_iMotorStopping := 1 ,
gc_iMotorBlocked := 2 ,
gc_iMotor_NEW_STATE := 3 ,
gc_iMotorErrStart := 4 ,
gc_iMotorWork := 5 ,
gc_iMotorStarting := 6 ,
gc_iMotorNoFeedback := 7
);
END_TYPE
При этом оператор
Код:
CASE State OF
gc_iMotorStopped..gc_iMotorWork, gc_iMotorNoFeedback:
...
и конструкции типа
Код:
State > gc_iMotorStopped AND State < gc_iMotorNoFeedback
ну и т.д. не перестают работать