Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
1-1133771689
SamProf
2005-12-05 11:34
2006.01.01
Работа с DLL


8-1122406227
Gamer
2005-07-26 23:30
2006.01.01
Работа со цветами


2-1134687534
crazycorpse
2005-12-16 01:58
2006.01.01
Динамический массив n x m


2-1134408232
fast2
2005-12-12 20:23
2006.01.01
Как сделать, чтоб в комбобоксе нельзя было вводить с клавиатуры..


2-1134412154
vpavel
2005-12-12 21:29
2006.01.01
Запрет CTRL+ALT+DEL на XP




   Наверх