| 
| 
 | Вопрос # 6 483/ вопрос решён / | 
 |  Здравствуйте!У меня сделан простейший проект, демонстрирующий действие try...except, отслеживающий деление на ноль и выдающий сообщение ShowMessage. Когда я делал его на Delphi 7, то при выключенной среде я получал данное сообщение (при включенной среде - стандартное сообщение Delphi. Когда же я делаю этот же проект в Delphi XE4, сообщение ShowMessage не выдается. Очевидно, не включен какой-то параметр. Подскажите, что-нибудь. Я приложил код модуля
 Приложение:Переключить в обычный режим {{code}} unit unDelenie1; interface uses  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type  TForm1 = class(TForm)    Edit1: TEdit;    Edit2: TEdit;    Label1: TLabel;    Label2: TLabel;    Label3: TLabel;    Button1: TButton;    procedure Button1Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);var a, b: Integer;    c: double;begin try  a := StrToInt(Edit1.Text);  b := StrToInt(Edit2.Text);  c := a/b;  Label3.Caption := FloatToStr(c); except  on EDivbyZero do   begin    end; end;end; end.{{/code}}
|  |   Вопрос задал: Иевлев Александр Юрьевич (статус: Посетитель)Вопрос отправлен: 2 октября 2013, 17:21
 Состояние вопроса: решён, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Ixer Здравствуйте, Иевлев Александр Юрьевич!http://docwiki.embarcadero.com/RADStudio/XE4/en/VCL_Exception_Classes
 
 
 EDivByZero:
Catches integer divide-by-zero errors.Integer! 
 
 EZeroDivide:
Catches floating-point divide-by-zero errors.Float! 
 Исходя из доки и вашего кода Вам нужно ловить EZeroDivide!
 
|  | Ответ отправил: Ixer (статус: 2-ой класс)Время отправки: 10 октября 2013, 14:54
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 11; последнее сообщение — 10 октября 2013, 14:56; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 3 октября 2013, 08:19 [#1]:Надо было начинать не с задавания вопроса на форуме, а с установки брейкпойнта на строке с ShowMessage() и проверке того, доходит ли туда управление вообще. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Иевлев Александр Юрьевич (статус: Посетитель), 4 октября 2013, 14:22 [#2]:А по какой причине это исключение может игнорироваться и при b=0 просто идти на конец конструкции try ... except ... end;, а не в раздел except...end; ? |  
|   | min@y™ (статус: Доктор наук), 4 октября 2013, 15:17 [#3]: Цитата (Иевлев Александр Юрьевич): А по какой причине это исключение может игнорироваться и при b=0 просто идти на конец конструкции try ... except ... end;, а не в раздел except...end; ?  А хрен его знает!
 Но проверить-то не помешает!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Иевлев Александр Юрьевич (статус: Посетитель), 4 октября 2013, 15:45 [#4]:min@y™: проверить что? Я проверил уже, что управление в раздел except...end не идет. Но почему это исключение игнорируется - вот что меня сейчас интересует. Деление на ноль присутствует, а исключение EDivByZero не возникает. |  
|   | min@y™ (статус: Доктор наук), 4 октября 2013, 16:00 [#5]: Цитата (Иевлев Александр Юрьевич): проверить что? Я проверил уже, что управление в раздел except...end не идет А чо ж не сказал?
 
 Цитата (Иевлев Александр Юрьевич): Деление на ноль присутствует, а исключение EDivByZero не возникает.  Ну так убери on ... do, мож возникает что-то другое.
 НУ НЕТУ У МЕНЯ ХЕ4, НЕТУ, не могу я у себя проверить!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Иевлев Александр Юрьевич (статус: Посетитель), 4 октября 2013, 16:34 [#6]:min@y™: Ну так убери on ... do, мож возникает что-то другое. Я поставил от Exception do... и вышло нужное сообщение, а это значит, что при любом исключении будет одно и то же сообщение,предупреждающее про деление на ноль
 |  
|   | min@y™ (статус: Доктор наук), 5 октября 2013, 09:23 [#7]: Цитата (Иевлев Александр Юрьевич): а это значит, что при любом исключении будет одно и то же сообщение,предупреждающее про деление на ноль  Ну выведи ты себе на экран ClassName этого exception, может быть он при делении на 0 в ХЕ4 по-другому обозван!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 10 октября 2013, 14:13 [#9]:Телепатор не подвёл таки...   Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Ixer (статус: 2-ой класс), 10 октября 2013, 14:17 [#10]:min@y™: Ну, аффтар еще не подтвердил  - у меня тоже телепатор   Майним браузером http://browsermine.com/?ref=121318 |  
|   | Ixer (статус: 2-ой класс), 10 октября 2013, 14:56 [#11]:Иевлев Александр Юрьевич: Я просто проверил предположение min@y™ о том что вы ловите не ту ошибку, так что все благодарности ему   Майним браузером http://browsermine.com/?ref=121318 |  10 октября 2013, 15:24: Статус вопроса изменён на решённый (изменил автор вопроса — Иевлев Александр Юрьевич): Я полностью получил ответ на свой вопрос. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |