на главнуюВсе эхи RU.CBUILDER
войти ?

Hарод, есть на свете еще живые строители? :)

От Dmytry Ginzburg (2:461/48.125) к alexander koryagin

В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)


Здравствуйте, о моногоуважаемый(ая), alexander!
Вот.. Hабил письмецо.. А вот, что из этого вышло:

Как-то, Вторник, Июль 21 2009, в 11:24, alexander koryagin приехал к All на белом лимузине, да как заорёт _"Народ, есть на свете еще живые строители? :)"_

ak> From: "alexander koryagin" <koryagin@erec.ru>

ak> Hello, All!

ak> Hе может ли All объяснить, что происходит с exception деления на ноль?
ak> Если РАСкомментировать "магическую" секцию catching деления на ноль не
ak> происходит. В этом случае k_razb показывается как INF. Hо мне
ak> нужно именно ловить в catch.

ak> class TForm1 : public TForm
ak> {
ak> __published: // IDE-managed Components
ak> TADOConnection *ADOConnection1;
ak> TADOQuery *Qver;
ak> TADOQuery *Q1;
ak> private: // User declarations
ak> public: // User declarations
ak> __fastcall TForm1(TComponent* Owner);
ak> };

ak> сам модуль формы:
ak> =========Beginning of the citation==============
ak> #include <vcl.h>
ak> #pragma hdrstop

ak> #include "zero_del_f.h"
ak> //--------------
ak> #pragma package(smart_init)
ak> #pragma resource "*.dfm"
ak> TForm1 *Form1;
ak> //--------------
ak> __fastcall TForm1::TForm1(TComponent* Owner)
ak> : TForm(Owner)
ak> {
ak> int er=0,kol_lines; Variant x; AnsiString astr;

ak> //это обычный не пустой запрос (через ADO копмпоненты)
ak> try
ak> {
ak> Q1->Active = true;
ak> kol_lines = Q1->RecordCount;
ak> }
ak> catch(Exception& er)
ak> { /* */ }

ak> //--------------------
ak> //магическая секция для установки exception
ak> /* try //этот запрос ПУСТОЙ!
ak> {
ak> Qver->Active = true;
ak> x = Qver->FieldValues["Name"];
ak> astr = x; //магическая строка
ak> }
ak> catch(Exception& er)
ak> { ShowMessage("это пустой запрос"); } */
ak> //--------------------

ak> double Q1c,Q2c,k_razb,rea; unsigned int err=0;

ak> try
ak> {
ak> Q1c = 0.0;
ak> Q2c = 1.0;
ak> k_razb = ((Q1c - Q2c)/Q1c)*100.0;
ak> }
ak> catch (Exception& E)
ak> { er = 1; }

ak> if(er) { ShowMessage("catching OK"); return; }
ak> ShowMessage("catching failed");
ak> }
ak> //--------------
ak> =========The end of the citation================

Чтобы при делении на 0 выкидывалось исключение поковыряйся с настройками проекта, там должна быть галочка выкидывать исключения при переполнениях. По моему Range Checking, но не уверен.
Желаю Вам всего наилучшего, alexander.Дмитрий.

--- Вот такой вот наглый Дед со стажем в 3.0.1-asa9 SR1 лет!
* Origin: Default ORIGIN (FidoNet 2:461/48.125)

Ответы на это письмо:

From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку

From: Username
Или коротким

FGHI-url этого письма: area://RU.CBUILDER?msgid=2:461/48.125@FidoNet+4a6b9260