Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему «Return value must be undefined»?


Страницы:   1 2

И. Павел ©   (2011-12-12 10:10:00) 

Вроде бы функция линейная. Единственное — может прерваться выполнение сгенерированным исключением. Но перехвата исключения в функции нет. Т.е. в любом случае выполнение либо дойдет до end, и тогда result := не удастся миновать, либо возникнет исключение и тогда уже не важно, возвращает функция что-то или нет. Но при проверке кода Delpgi XE выдает warning...

function TSEDDeloMonitoringYITService.GetLastHDMes: TDateTime;
var Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 try
   Reg.RootKey := HKEY_LOCAL_MACHINE;
   if not Reg.OpenKey('SOFTWARE\YITMonitoring', False) then
     raise Exception.Create('Не удалось открыть раздел реестра «HKEY_LOCAL_MACHINE\SOFTWARE\YITMonitoring»');
   result := Reg.ReadInteger('day') + Reg.ReadInteger('sec') / 60 / 60 / 24;
   Reg.CloseKey;
 finally
   Reg.Free;
 end;
end;


И. Павел   (2011-12-12 10:28:00) [21]

В Delphi 7 то де самое —> В Delphi 7 то же самое


И. Павел   (2011-12-12 10:28:00) [22]

В Delphi 7 то де самое.
Но вот этот блок пропускается нормально:
function TForm1.GetLastHDMes: TDateTime;
begin
 result := 1;
 if Now = 1 then raise Exception.Create('123');
end;

Если обернуть в try/except то warning выдается, как и ожидалось.


И. Павел   (2011-12-12 10:23:00) [23]

> [1] Медвежонок Пятачок ©   (12.12.11 10:18)
> Оно говорит, что при определнных фазах венеры результат
> не получит никакого значения

Это я понимаю. Но при каких фазах?
Если бы вместо finally стоял except то было бы ясно.
Похоже, все дело в raise. Если его удалить, warning исчезает. Но какая разница, задал ли я result, если в функции сгенерировалось исключение?


> [2] Anatoly Podgoretsky ©   (12.12.11 10:20)

Что оно?


Anatoly Podgoretsky   (2011-12-12 10:20:00) [24]

Вот оно


Медвежонок Пятачок   (2011-12-12 10:18:00) [25]

Оно говорит, что при определнных фазах венеры результат не получит никакого значения


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо