Главная страница
    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.46 MB
Время: 0.01 c
2-1134806230
melnik11
2005-12-17 10:57
2006.01.01
help!!!


14-1134235288
Kerk
2005-12-10 20:21
2006.01.01
Весь день кодю на Прологе.


2-1134579855
тт
2005-12-14 20:04
2006.01.01
dll из ресурсов.


14-1134062472
MaxSVR
2005-12-08 20:21
2006.01.01
Пролема с жестким диском


14-1134334233
JazY
2005-12-11 23:50
2006.01.01
Сложности перехода с Excel на Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский