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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.036 c
1-1100249183
frEEstyler
2004-11-12 11:46
2004.11.28
отсылка на сервер информации


6-1095420003
SergeySEM
2004-09-17 15:20
2004.11.28
как пропилинговать сервак


14-1099843388
Knight
2004-11-07 19:03
2004.11.28
Не могу настроить сеть на виртуальной машине под Virtual PC...


14-1100155682
karat
2004-11-11 09:48
2004.11.28
Ваше мнение на мой подход.


4-1097905280
Tar
2004-10-16 09:41
2004.11.28
Открытие html-файла





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