Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.29;
Скачать: CL | DM;

Вниз

ворнинг в функции   Найти похожие ветки 

 
Chik   (2006-01-12 11:14) [0]


...

function DoSomesing(const AValue: Integer): Integer;
begin
 case AValue of
   1..3: Result := 5;
   else RaiseExeption("Unknow value");
 end
end;

procedure RaiseExeption(const AErrorMessage: String);
begin
  raise Exception.Create(AErrorMessage);
end;
...


При компиляции ругается что значение Result может быть неопределенно, но почему?


 
Digitman ©   (2006-01-12 11:28) [1]


> почему?


потому что компилятору неведомы значения фактического параметра AValue, формируемого в ран-тайм


 
Chik   (2006-01-12 11:47) [2]


> потому что компилятору неведомы значения фактического параметра
> AValue, формируемого в ран-тайм

Непонятно, так как в той же справке по делфе, пишут, что если ворнинг в case, то нужно else присвоить result число, но зачем мне там присваивать если там ексепшн? какой в этом смысл?


 
Внук ©   (2006-01-12 11:49) [3]

Смысл в том, что функция должна вернуть определенное значение, а компилятору неведомо, что делает RaiseException


 
Jeer ©   (2006-01-12 11:49) [4]

Result := 0;
case AValue of
  1..3: Result := 5;
  else RaiseExeption("Unknow value");
end

Так не пробовал с учетом [1] ?


 
Chik   (2006-01-12 11:54) [5]


> Смысл в том, что функция должна вернуть определенное значение,
> а компилятору неведомо, что делает RaiseException

Как это неведомо ? А посмотреть? :)
Пока сделал так:

function DoSomesing(const AValue: Integer): Integer;
begin
case AValue of
  1..3: Result := 5;
  else
  begin
     Result := 0;
     RaiseExeption("Unknow value");
   end;
end
end;

То ли им было влень дальше анализировать код, то ли я чего-то не понял :)


 
evvcom ©   (2006-01-12 12:06) [6]


> То ли им было влень дальше анализировать код

А если бы ты там супер-пупер вложенность организовал, им анализировать всевозможные извилины твоего хитроумного алгоритма?
Я обычно, если хочу сэкономить на не нужном по логике работы программы Result := 0, то пишу так
{$IFOPT R+} Result := 0; {$ENDIF}
Пока отлаживаюсь с RangeChecking = On warning-ов нет, а в билде этой строки уже не будет. Я то знаю, что она не нужна.


 
Юрий Зотов ©   (2006-01-12 12:39) [7]

Замените на raise Exeption.Create("Unknow value") и не будет никаких ворнингов.



Страницы: 1 вся ветка

Текущий архив: 2006.01.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1135334283
12DFBDD
2005-12-23 13:38
2006.01.29
ДКОИ он же EBCDIC


1-1135092643
Корешь
2005-12-20 18:30
2006.01.29
Как создать форму по имени?


15-1135842060
Ega23
2005-12-29 10:41
2006.01.29
Предчуствия.


5-1123525324
Michael5
2005-08-08 22:22
2006.01.29
А как, создав компонент, и добавив туда еще один, использовать


15-1136742799
SergP
2006-01-08 20:53
2006.01.29
Приват24