Текущий архив: 2006.01.01;
Скачать: CL | DM;
Вниз
Небольшая проблемка с функцией. Найти похожие ветки
← →
Катерина (2005-12-13 17:02) [0]Помогите пожалуйста срочно доработать функцию подсчета процента.
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:06) [1]
> Выводится сообщение об ошибке а затем благополучно продолжается
> подсчет
Однако, подсчет у Вас сделан раньше, чем возбуждение исключения
← →
Digitman © (2005-12-13 17:15) [2]нашута здесь возбуждение исключения и тут же блок обработки исключения - совершенно не понятно ..
← →
Катерина (2005-12-13 17:17) [3]Поставила после
raise EMyException.Create("Проценты должны быть в пределах 0-100%!");-не работает;потом в самом конце перед самым последним END-опять не работает, причем выводит огромное число непонятно откуда))
← →
Катерина (2005-12-13 17:18) [4]Может я задание не так читаю?
Задание:
Написать функцию вычисления процента с двумя параметрами, функция должна генерировать собственное исключение в случае возникновении ошибки.
← →
wal © (2005-12-13 17:21) [5]
begin
result := 0;
if (proc>100) or (proc<0) then raise ...;
result := chislo*proc*0.01
end;
ФСЕ. Формально задание выполнено
← →
evvcom © (2005-12-13 17:23) [6]
> result := 0;
это лишнее
← →
Игорь Шевченко © (2005-12-13 17:24) [7]Задание обычно делается самостоятельно, не так ли ?
← →
Игорь Шевченко © (2005-12-13 17:25) [8]
> begin
> result := 0;
> if (proc>100) or (proc<0) then raise ...;
> result := chislo*proc*0.01
> end;
result := 0 убери
← →
wal © (2005-12-13 17:29) [9]
> [6] evvcom © (13.12.05 17:23)
> [8] Игорь Шевченко © (13.12.05 17:25)
Мда. Пора домой. Заработался :)
Страницы: 1 вся ветка
Текущий архив: 2006.01.01;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c