![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Небольшая проблемка с функцией. [D4]
Катерина © (2005-12-13 17:02:00)Помогите пожалуйста срочно доработать функцию подсчета процента.
function procent(chislo, proc: real): real;
const
CR = #13#10;
var
s, s1, s2, s3: string;
begin
try
result := chislo*proc*0.01;
//Проценты должны лежать в пределах от 0 до 100%
if (proc>100) or (proc<0) then
//Создаем объект созданного класса исключений, используя конструктор класса исключений
raise EMyException.Create('Проценты должны быть в пределах 0-100%!');
//Проводим сами вычисления}
except
//Обрабатываем самостоятельно исключение
on E: EMyException do begin
s := ('Класс, в котором произошло исключение: '+ Self.ClassName);
s1 := 'Тип ошибки: '+ E.ClassName;
s2 := 'Ошибка: ' + E.Message;
s3 := ' Адрес ошибки: ' + Format('%p', [ExceptAddr]);
//Выводим сообщение об ошибке на экран
MessageDlg (s + CR + s1 + CR + s2 + CR + s3, mtError, [mbOK], 0);
//Останавливаем выполнение программы
exit;
end;
end;
end;
Все работает только не останавливается выполнение программы.Выводится сообщение об ошибке а затем благополучно продолжается подсчет например 1000%. Может, EXIT не подходит?
wal (2005-12-13 17:29:00) [1]
> [6] evvcom © (13.12.05 17:23)
> [8] Игорь Шевченко © (13.12.05 17:25)
Мда. Пора домой. Заработался :)
Игорь Шевченко (2005-12-13 17:25:00) [2]
> begin
> result := 0;
> if (proc>100) or (proc<0) then raise ...;
> result := chislo*proc*0.01
> end;
result := 0 убери
Игорь Шевченко (2005-12-13 17:24:00) [3]Задание обычно делается самостоятельно, не так ли ?
evvcom (2005-12-13 17:23:00) [4]
> result := 0;
это лишнее
wal (2005-12-13 17:21:00) [5]
begin
result := 0;
if (proc>100) or (proc<0) then raise ...;
result := chislo*proc*0.01
end;
ФСЕ. Формально задание выполнено
Катерина (2005-12-13 17:18:00) [6]Может я задание не так читаю?
Задание:
Написать функцию вычисления процента с двумя параметрами, функция должна генерировать собственное исключение в случае возникновении ошибки.
Катерина (2005-12-13 17:17:00) [7]Поставила после
raise EMyException.Create('Проценты должны быть в пределах 0-100%!');-не работает;потом в самом конце перед самым последним END-опять не работает, причем выводит огромное число непонятно откуда))
Digitman (2005-12-13 17:15:00) [8]нашута здесь возбуждение исключения и тут же блок обработки исключения - совершенно не понятно ..
wal (2005-12-13 17:06:00) [9]
> Выводится сообщение об ошибке а затемблагополучно продолжается
> подсчет
Однако, подсчет у Вас сделан раньше, чем возбуждение исключения