Как отключить предупреждение в Delphi о том, что "возвращаемое значение ... может быть неопределенным"?
у меня есть функция, которая дает мне следующее предупреждение:
[предупреждение DCC] имя файла.pas (6939): W1035 возвращаемое значение функции "функция" может быть неопределенным
функция, однако, является чистой, небольшой и имеет известное, ожидаемое возвращаемое значение. Первое утверждение в функции:
Result := '';
и нет локальной переменной или параметра с именем Result
либо.
есть ли какая-либо директива типа pragma Я могу окружить этот метод, чтобы удалить это предупреждение? Это Delphi 2007.
к сожалению, справочная система на этой установке Delphi не работает, поэтому я не могу всплывать помощь для этого предупреждения прямо сейчас.
кто-нибудь знает с головы до ног, что я могу сделать?
6 ответов
вы уверены, что сделали все, чтобы решить предупреждение? Может, вы могли бы отправить код, чтобы мы посмотрели?
вы можете отключить предупреждение локально таким образом:
{$WARN NO_RETVAL OFF}
function func(...): string;
begin
...
end;
{$WARN NO_RETVAL ON}
Я не уверен, что хочу видеть код для этого устройства... ведь ошибка возникает в строке 6939 ... Может быть, какая-то внутренняя таблица компилятора была превышена?
кажется, в Delphi есть какая-то ошибка. Прочитайте этот пост, последний комментарий ссылки на другие сообщения об ошибках, которые могут быть тот, который вы получили:
{$WARN NO_RETVAL OFF} - это то, что вы ищете, но обычно мне нравится выяснять, почему такие вещи происходят. Вы можете рассмотреть возможность форматирования по-другому и посмотреть, поможет ли это.
У вас есть какие-либо команды изменения потока, такие как Exit? Вы прямо поднимаете исключения и т. д.? Имеет ли ваш оператор case еще в конце, который устанавливает значение результата?
может попробовать настроить эти элементы и посмотреть, устраняет ли это предупреждение.
чтобы получить хороший ответ на этот вопрос, вам придется опубликовать код. В общем случае компилятор Delphi выдаст это предупреждение, если существует возможный путь кода, который может привести к тому, что результат не будет определен. Иногда этот путь кода менее очевиден.
в компиляторе Delphi есть такая ошибка, так как, по крайней мере, Delphi4: если сумма чисел параметров функции (включая Self и Result) и локальных переменных превышает 31, это вызывает проблемы. Например, он может писать предупреждения W1035 (результат может быть неопределенным). Он может пропустить не используемые переменные. Просто попробуйте этот проект:
program TestCompilerProblems;
procedure Proc;
var
a01, a02, a03, a04, a05, a06, a07, a08, a09, a10,
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20,
a21, a22, a23, a24, a25, a26, a27, a28, a29, a30,
a31, a32, a33, a34, a35, a36, a37, a38, a39, a40: Integer;
begin
end;
begin
Proc;
end.
это вызовет 31 намек, а не 40.