77725.fb2 Bash.org.ru IT Happens Истории ## 1 - 800 - читать онлайн бесплатно полную версию книги . Страница 242

Bash.org.ru IT Happens Истории ## 1 - 800 - читать онлайн бесплатно полную версию книги . Страница 242

#241: Детектор рачьего свиста

26 ноября 2008, 12:45. рейтинг: 1295

Работаю программистом по автоматизации производства. Есть большой проект, который уже несколько лет хорошо и стабильно работает, но в него регулярно нужно вносить небольшие изменения в связи с модернизацией оборудования. И был в свое время у меня помошник, в образовании которого есть ряд существенных пробелов.

Итак, одно из таких изменений было внесено и шел процесс финального тестиро вания на экспериментальном стенде – все отлично, все работает и радует глаз. И тут понадобилось мне отлучиться. Прихожу – оборудование стоит, никаких аварийных сообщений нет. Ненормально и совершенно непригодно для реальной эксплуатации. Пробую еще несколько раз: оборудование останавливается в произвольные моменты времени без всяких на то причин! А надо сказать, что проект сделан в среде Ult raLogik, у которой с возможностями отладки большие проблемы. Поэтому самый верный способ поиска ошибок – это медленное и вдумчивое курение исходников. И вот при очередной итерации этого увлекательного процесса я обнаруживаю следующую проце дуру, написанную моим горе-помошником.

procedure FBDBLOCK(var Input: integer;

var FromValue : integer;

var ToValue : integer;

var Output : boolean);

var

prevvalue: integer;

begin

Output:=false;

if (Input=ToValue) and (prevvalue=FromValue) then Output:=true;

prevvalue:=Input;

end;

Фанфары, мат и желание дать в репу! У него оборудование выключается, когда на систему снизойдёт вселенская благодать и случайное значение неинициализиро ванной переменной совпадёт с нужным!

Хорошо, что это был первый раз, когда эта процедура реально использовалась.