Посмотрел проект, нашёл несколько ошибок:
1) в условие поднятия флага сортировки (NeedResort) нужно добавить отслеживание изменения состояния переключателей АВТО и изменения количества насосов.
2) в цикле "// Сохранение текущего состояния с заменой отказавших насосов" InternalStart[i] нужно заменить на InternalStart[PumpData[i].Index], так как массив уже отсортирован.
Да, немецкие станки так и вводят в эксплуатацию. Задача наладчика ознакомить с панелью управления, предоставить график техобслуживания с указанием быстроизнашивающихся элементов. На это обычно час уходит и оператор продукцию через 2-3 часа производит. В русском оборудовании: болты и шпильки из хозтоваров, пока три дня наладчик всё не протянет, не поедет.
ой не надо эту туфту здесь втирать, сейчас не 90ые.
с кем и с чем только не работали за эти годы, такие же люди, так же и работают и косячат и часами совещания проводят по всякой ерунде, и также халтурят
и чуть что - элементарно кидают, оставив эксплуатацию без схем, без софта и запчастей
или наоборот выставляют за каждый болт как за чугунный мост
а за "русское оборудование" отдельные лучи поноса вам в карму
Не имеет смысла, т.к. все равно циклу for надо будет сделать полный проход по массиву InternalStart[] и в целом без разницы в каком это будет порядке. Но вычисление индекса i в каждой итерации существенно проще, чем предложенное вами PumpData[i].Index
// Сохранение текущего состояния с заменой отказавших насосов
FOR i := 0 TO 15 DO
IF InternalStart[i] AND NOT PumpData[i].Available THEN
(* Находим замену для отказавшего насоса *)
FOR j := 0 TO AvailableCount - 1 DO
IF PumpData[j].Available AND NOT InternalStart[PumpData[j].Index] THEN
InternalStart[PumpData[j].Index] := TRUE;
EXIT;
END_IF;
END_FOR;
InternalStart[i] := FALSE;
END_IF;
END_FOR;
Последний раз редактировалось SlavikP; 22.04.2026 в 09:46.
Работа не волк, а work.