Форум: "Начинающим";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Внизворнинг в функции Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c