Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];

Вниз

Небольшая проблемка с функцией.   Найти похожие ветки 

 
Катерина   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
1-1133495000
dust
2005-12-02 06:43
2006.01.01
как добавить вкладку в свойства папки


1-1133531346
VadimX
2005-12-02 16:49
2006.01.01
Компоненты Д2005


4-1130761287
VoAnt
2005-10-31 15:21
2006.01.01
Запуск приложения загруженного в MemoryStream


14-1134223686
Влад
2005-12-10 17:08
2006.01.01
Посоветуйте мини пылесос :)


2-1134815144
Lokk
2005-12-17 13:25
2006.01.01
у меня такая проблема....





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский