функции может быть неопределён - в данном случае ошибочен? Что скажет на это Лазарь?
function Test: Boolean;
var
bFound: Boolean;
begin
bFound := (Now > 0);
if bFound then
Result := True;
if not bFound then
Result := False;
end;
Пример синтетический, вырезан из контекста программы, где словил этот варнинг
Конечно ошибочный
она не умеет в такие конструкции, поэтому в данном случае должно быть if then ELSE
Оно так ещё и быстрее работает
В логике рабочей функции это сложно сделать, приходится для подавления варнинга вставлять в начало Result := False;
самый быстрый код тот, что не написан: Result:=Now>0;
угу, у меня тоже такое бывает
У любой грамотной функции должен быть Result по умолчанию, который определяется в первой же строке. Причина: в процессе работы функции всякое может случится, при этом результат уже будет определен как "по умолчанию".
На такие предосторожности компилер будет ещё более надоедлив )
fpc именно в этом фрагменте ничего подозрительного не видит Но может в исходном что-то похоже, но не совсем так? Где-то Exit по пути, еще какая-то напасть? В синтетическом фрагменте точно есть предупреждение?
не верно. варнинг исчезнет, если в том примере в начале добавить Result := False или True.
Да, случается и очень огорчает иногда, так как приходится идти на поводу у компилятора, чтобы избежать варнингов )
Обсуждают сегодня