Проблема с возвратом значения функции
Добавлено: 30 июн 2016, 12:55
После очередного обновления с неизбежной перекомпиляцией своих доработок наткнулся на очень неприятную проблему. Весь код приводить не буду, только маленький кусок с отладочными сообщениями, чтобы можно было понять суть.
Казалось бы, если первое сообщение "TRUE", то за ним должно идти "Всё хорошо". Ан нет, после "TRUE" идёт "Всё плохо"!
Код был написан очень давно, работал без нареканий. Когда неожиданно перестал, причину пришлось искать долго. Тупо смотрел на эти несколько строк, пытался понять, где же я накосячил, и в упор не видел ничего проблемного. Понял, что накосячил не я, только когда навставлял отладочных сообщений. В итоге пришлось первую функцию трансформировать в процедуру, которая пишет свой результат в глобальную переменную, а вторая функция, соответственно, оттуда его читает. Таким образом, проблему удалось не то чтобы решить, но обойти. Теперь вот думаю: то ли глобально искать и чистить в своём коде все похожие места, то ли проблема всё-таки разовая и вызвана неудачным сочетанием каких-то факторов.
Надеюсь, кому-нибудь моё повествование сэкономит время и нервы.
Код: Выделить всё
function f1(...): boolean;
...
f1:=true;
Message(String(f1), 0);
end;
function f2(...): boolean;
...
f2:=f1(...);
if (f2) Message('Всё хорошо', 0);
else Message('Всё плохо', 0);
...
end;
Код был написан очень давно, работал без нареканий. Когда неожиданно перестал, причину пришлось искать долго. Тупо смотрел на эти несколько строк, пытался понять, где же я накосячил, и в упор не видел ничего проблемного. Понял, что накосячил не я, только когда навставлял отладочных сообщений. В итоге пришлось первую функцию трансформировать в процедуру, которая пишет свой результат в глобальную переменную, а вторая функция, соответственно, оттуда его читает. Таким образом, проблему удалось не то чтобы решить, но обойти. Теперь вот думаю: то ли глобально искать и чистить в своём коде все похожие места, то ли проблема всё-таки разовая и вызвана неудачным сочетанием каких-то факторов.
Надеюсь, кому-нибудь моё повествование сэкономит время и нервы.