Главная страница
    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.009 c
14-1133991679
Reindeer Moss Eater
2005-12-08 00:41
2006.01.01
Идентифицировать исполнителей


4-1130343710
MaxCmd
2005-10-26 20:21
2006.01.01
Как получить текст из надписа


2-1134245842
Demon1313
2005-12-10 23:17
2006.01.01
Срочно плиз-как сделать чтоб при каждом запуске приложения в


8-1122797191
cava
2005-07-31 12:06
2006.01.01
mediaplayer


4-1130654380
stenford
2005-10-30 09:39
2006.01.01
стандартное меню Windows





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