Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Директивы компелятора.   Найти похожие ветки 

 
Vaitek ©   (2004-11-16 12:38) [0]

Что-то я в хелпе не нашел, такой вещи:

Как можно директивой компелятора включить/отключить в нужном месте кода параметр "Stop on Delphi Exceptions"?

Или предложите другой способ. Конкретно - надо в некоторых участках кода отключить реакцию отладчика на вычислительные ошибки (корень из отрицательного числа и деление на ноль).

Что бы он не выдовал сообщение об обноруженном исключении, а то даже
Try
Except
End
не помогает.

Нужно это для отладки.

Спасибо.


 
NAlexey ©   (2004-11-16 12:40) [1]

щас тебе ответят про дерективы компелятора...


 
Smithson   (2004-11-16 12:41) [2]

Никак.
Можно отключить все, можно включить требуемые исключения в список исключений :), то есть в список Exceprion, которые дельфи не обрабатывает.


 
Vaitek ©   (2004-11-16 12:51) [3]

Нет, ну ведб когда-то в паскале, я точно помню, как-то отключал реакцию на ошибки ввода вывода в файлы, что бы что-то там проверить. неужели нет ничего подобного?


 
novice_man ©   (2004-11-16 12:59) [4]

Посмотри статью по адресу:
http://www.goldfaq.ru/modules/xfsection/article.php?articleid=493

ЗЫ: Если вы Vaitek предпочитаете пользоваться форумом как поисковиком, то это дурной тон. Первым делом не поленитесь обратиться к Рамблеру и т.п.


 
Amoeba ©   (2004-11-16 13:08) [5]


> Vaitek ©   (16.11.04 12:38)

То, что ты хочешь сделать, к директивам компилятора (и к самому компилятору) не имеет ни малейшего отношения. Остановка (или не остановка) на исключениях релизована внутри IDE.


 
Vaitek ©   (2004-11-16 13:10) [6]

Я эту ссылку уже видел - там нет ответа на мой вопрос. И не надо голословных обвинений. Давайте жить дружно.


 
panov ©   (2004-11-16 13:11) [7]

>Vaitek ©   (16.11.04 13:10) [6]
Вот ты бы привел пример кода, где тебе нужно подавить Exception, тогда бы и разговор был предметный.


 
novice_man ©   (2004-11-16 13:21) [8]

>Vaitek ©  (16.11.04 13:10) [6]

Я эту ссылку уже видел - там нет ответа на мой вопрос. И не надо голословных обвинений. Давайте жить дружно.


Я не хотел никого окорбить! Сорри если восприняли как выпад.


 
Vaitek ©   (2004-11-16 13:27) [9]

Ок, ваша взяла.

Итак в рамкаж одной процедуря я имею два так сказать логических блока.

1)
 For i := 6 to 7 do
 For j := -Trunc(l2/4) to Trunc(l2/2) do
 Begin
   ...
   Try
     Zb1 := Zd1+{-}ar[i,0]*Sqrt(-Sqr(Yb1)*U1-2*Yb1*S1+Q1);
     o3D.Points[o3D.PCount].Point[0] := Xb1;
     o3D.Points[o3D.PCount].Point[1] := Yb1;
     o3D.Points[o3D.PCount].Point[2] := Zb1;
     o3D.Points[o3D.PCount].Color := clRed;
     Inc(o3D.PCount);
   Except
   End;
   ...
 End;

В этом блоке, как можно заметить, в случае проблем с sqrt добавление данных в массив не производится (не волнуйтесь - память под массив я уже выделил).

Далее следует следующий блок.

 Repeat
   ...
   Yb1 := Yb1+Yb1s;

   Xb1 := Yb1*V1+W1;
   Zb1 := Zd1-Sqrt(-Sqr(Yb1)*U1-2*Yb1*S1+Q1);

   Xb2 := Yb2*V2+W2;
   Zb2 := Zd2-Sqrt(-Sqr(Yb2)*U2-2*Yb2*S2+Q2);

   Xb3 := Xa3;
   Zb3 := Zd3-Sqrt(-Sqr(Yb3)+2*Yb3*Ya3+Q3);

   tr4 :=
   Sqr(Sqr(Xb1-Xb2)+Sqr(Yb1-Yb2)+Sqr(Zb1-Zb2) - k2*k2)+
   Sqr(Sqr(Xb2-Xb3)+Sqr(Yb2-Yb3)+Sqr(Zb2-Zb3) - k2*k2)+
   Sqr(Sqr(Xb3-Xb1)+Sqr(Yb3-Yb1)+Sqr(Zb3-Zb1) - k2*k2);
   If (tr4 > tr1) then
   begin
     Yb1s := Yb1s*-1;
     Yb1 := Yb1+Yb1s;
     Yb1s := Yb1s*0.9;
     inc(ii);
   End else
   Begin
     tr1 := tr4;
   End;
   ...
 Until ((ii >= maxstep) or (abs(tr1) < CritFunc);

Я надеюсь троеточие (...) дает понять, что это не весь код, а лишь значимый оего кусочек.
Короче в этом блоке тоже могут возникать проблемы со взятием sqrt, но так как я использую Try...Except выше, то я отключил Stop on Delphi Exceptions. Мне же надо бы отловить момент возникновения ошибки во втором блоке и просмотреть содержимое переменных, номер итерации цикла и т. п.
Теперь ясно?


 
Vaitek ©   (2004-11-16 13:29) [10]

За орфографию - сорри, что сегодня пальцы заплетаются 8-)


 
panov ©   (2004-11-16 13:41) [11]

Ну посмотри в Help

raise
re-raising
Exception
Exeception.Create


 
novice_man ©   (2004-11-16 13:49) [12]

Разве при запуске из-под Дельфи, ошибка деления на ноль или sqrt(-1) не возникнет?
try
k := sqrt(-10);
except end;



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
1-1100201324
GuAV
2004-11-11 22:28
2004.11.28
{$IFDEF PC_MAPPED_EXCEPTIONS}...{$ENDIF}


1-1100444283
bloodman
2004-11-14 17:58
2004.11.28
Как создать TWebBrowser в ран-тайм?


6-1095420604
Softal
2004-09-17 15:30
2004.11.28
Ssh


11-1082976585
4kusNick
2004-04-26 14:49
2004.11.28
Вопрос о динамическом создании RichEdit


4-1097501001
Shira333
2004-10-11 17:23
2004.11.28
Месторасположение объекта...