Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2013, 11:42   #1
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос Пишет про Result: "H2077 Value assigned to 'function_1' never used"

Код:
function function_1(): Boolean;
begin
  try

  except
    Result := false;

  end;

  Result := true;
end;
Про строку "Result := false;" пишет компилятор:
H2077 Value assigned to 'function_1' never used

Почему ?

Delphi XE
malor вне форума Ответить с цитированием
Старый 26.04.2013, 11:46   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

потому что вы не знаете как работают исключения и механизмы try ..
eval вне форума Ответить с цитированием
Старый 26.04.2013, 13:11   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

malor,
Вы привели ПОЛНЫЙ код функции?! (просто в таком виде он БЕССМЫСЛЕН).
это всё равно, что написать:
Код:
function function_1(): Boolean;
begin
  Result := false;
  Result := true;
end;
(можете попробовать, кстати, откомплировать )

во-вторых, warning - это не ошибка, это ПРЕДУПРЕЖДЕНИЕ (компилятор подсказывает, что, возможно, Вы этим куском кода совсем другой алгоритм хотели организовать, но что-то упустил..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2013, 15:30   #4
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Стрелка

Код функции не полон.

Переместил "Result := true;" вверх и теперь ворнинга нет.

Код:
function function_1(): Boolean;
begin

  Result := true;
  try
  except
    Result := false;
  end;
end;
malor вне форума Ответить с цитированием
Старый 26.04.2013, 15:46   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Переместил "Result := true;" вверх и теперь ворнинга нет.
что и требовалось доказать.
Скажем спасибо умному компилятору Delphi и впредь будем внимательнее, да?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2013, 15:59   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

не важно полон или не полон,
главное что есть ситуация когда "never used", а вот почему?
eval вне форума Ответить с цитированием
Старый 26.04.2013, 17:48   #7
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Код:
begin
  try
  except
    Result := false;
  end;
  Result := true;
end;
Прдеположиим в try произошло исключение. Функция вернет false. Но после try вы устанавливаете результа = true. То-есть функция по-любому вернет true. Это вам не C. Установка result не прерывает работу функции.

Правильный код:
Код:
begin
  Result := true;
  try
  except
    Result := false;
  end;
end;
hon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается построить, пишет уже ошибку "undefined processor type", ilvErsat0 Win Api 2 15.04.2013 09:15
Dreamwever пишет "Синтаксическая ошибка в строке 5..." vseriousv JavaScript, Ajax 0 25.02.2012 18:04
Не могу зайти на страничку "Вконтакте" - Пишет, Попытка соединения не удалась ЛиЛу Безопасность, Шифрование 51 16.06.2011 20:26
Выдаёт ошибку!"Warning: mysql_result() [function.mysql-result" djsliva PHP 2 24.01.2010 15:27
без юнита процедуры работают а с юнитом пишет "type mismatch" fawr Помощь студентам 1 08.11.2009 02:53