Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.025 c
14-1134062472
MaxSVR
2005-12-08 20:21
2006.01.01
Пролема с жестким диском


2-1134659544
kalim
2005-12-15 18:12
2006.01.01
Ado connection


5-1120107928
Другой Дмитрий
2005-06-30 09:05
2006.01.01
Как инициализировать наследуемые поля абстрактных классов?


1-1133516273
КК
2005-12-02 12:37
2006.01.01
В Excel из Delphi


14-1134232474
x.pro
2005-12-10 19:34
2006.01.01
Доставка цветов.