Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Небольшая проблемка с функцией. [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]


> Выводится сообщение об ошибке а затемблагополучно продолжается
> подсчет
Однако, подсчет у Вас сделан раньше, чем возбуждение исключения


Наверх

Титульная страница Поиск, карта сайта Написать письмо