Здравствуйте, ZetRooT, Вы писали:
ZRT>Здравствуйте, Shtirliz, Вы писали:
S>>Не всегда. Ее выключить можна.
S>>Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.
S>>И в IDE не будет вылетать экцепшены. S>>
ZRT>а есть опция чтоб она сама и ошибки правила?
Эта опция тока в ДНК есть...
У кого-то включена, у кого-то выключена...
... -= RSDN@Home 1.1.4 beta 5 rev 401 =- А в Winamp'e: Track 18
Дункан Маклауд любил ходить в лес и издеваться над кукушками.
138385660
try
Ky:= (image.Height-ysdvig) / (yMAX-yMIN);
Kx:= (image.Width-xsdvig) / (Nf-N0);except
on e_zero : EZeroDivide do
begin
showmessage('Ошибка в данных.');
Ky := 1;
Kx := 1;
end;
end;
Здесь вполне можно бе эксепшенов обойтись, достаточно проверить выделенное на ноль.
ZRT>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...
Здравствуйте, ZetRooT, Вы писали:
ZRT>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...
Если запуск из под IDE, то вылетать будет
Re[2]: except - вылетает, что делать - не знаю....
Здравствуйте, ansi, Вы писали:
A>Здравствуйте, ZetRooT, Вы писали:
ZRT>>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...
A>Если запуск из под IDE, то вылетать будет
ясно. а в реале будет нужная мессага выводиться? ну вообще защищаемы код будет защищаться?
"Если бы не было колобка, его следовало бы придумать..."
Re[3]: except - вылетает, что делать - не знаю....
Если в Tools->Debugger Options->Language Exceptions стоит галка Stop on Delphi Exceptions, то исключительные ситуации будут обрабатываться Delphi. Если же не стоит, то вашими конструкциями try...except
Re[2]: except - вылетает, что делать - не знаю....
Здравствуйте, ansi, Вы писали:
A>Здравствуйте, ZetRooT, Вы писали:
ZRT>>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...
A>Если запуск из под IDE, то вылетать будет
Не всегда. Ее выключить можна.
Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.
И в IDE не будет вылетать экцепшены.
... -= RSDN@Home 1.1.4 beta 5 rev 401 =- А в Winamp'e: И ничего не слышно...
Дункан Маклауд любил ходить в лес и издеваться над кукушками.
138385660
Re[3]: except - вылетает, что делать - не знаю....
Здравствуйте, Shtirliz, Вы писали:
S>Здравствуйте, ansi, Вы писали:
A>>Здравствуйте, ZetRooT, Вы писали:
ZRT>>>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...
A>>Если запуск из под IDE, то вылетать будет
S>Не всегда. Ее выключить можна.
S>Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.
S>И в IDE не будет вылетать экцепшены. S>
а есть опция чтоб она сама и ошибки правила?
"Если бы не было колобка, его следовало бы придумать..."
Здравствуйте, ZetRooT, Вы писали:
ZRT>а при создании ситуации деления на ноль в этом месте всё равно вылетает EZeroDivide. ткните носом в узкое место! или на доки по ним...
попробуй снять Stop on Delphi Exceptions в настройках
Re[5]: except - вылетает, что делать - не знаю....
Здравствуйте, Shtirliz, Вы писали:
S>Здравствуйте, ZetRooT, Вы писали:
ZRT>>Здравствуйте, Shtirliz, Вы писали:
S>>>Не всегда. Ее выключить можна.
S>>>Debugger options -> Language Exceptions И снять галочку Stop on Delphi Exceptions.
S>>>И в IDE не будет вылетать экцепшены. S>>>
ZRT>>а есть опция чтоб она сама и ошибки правила?
S>Эта опция тока в ДНК есть... S>У кого-то включена, у кого-то выключена...
хм надо мне эту ДНК скачать... прикольно! сама ошибки правит кинь ссылочку
"Если бы не было колобка, его следовало бы придумать..."
Re[2]: except - вылетает, что делать - не знаю....
Здравствуйте, Dimonka, Вы писали:
D>Здесь вполне можно бе эксепшенов обойтись, достаточно проверить выделенное на ноль.
Согласен, что это было бы полезно. Была примерно такая ситуация: поиск минимума функции. Ну и не мудрствуя лукаво, чтобы не считать хитро определенную область определения, я поступал примерно так:
function F(const x: array of Double): Double;
begin
try
Result := OriginalF(x);
except
Result := 1E+10;
end;
end;
Так вот, в результате длительного поиска под Win9x появлялась синяя кошечка... А под NT все было нормально. Проблему решило введение следующих функций следующего образца:
function Sqrt(x: Double): Double;
begin
if x < 0 then raise ECalcError.Create();
Result := System.Sqrt(x);
end;
С чем это было связано не знаю, но была гипотеза, что большой поток исключений приводил к переполнению где-то внутри Win9x и т. д.
Re[6]: except - вылетает, что делать - не знаю....
Здравствуйте, Dimonka, Вы писали:
D>Здесь вполне можно бе эксепшенов обойтись, достаточно проверить выделенное на ноль.
Совершенно согласен. Необходимо стремиться минимизировать количество исключений, т.к. обработка исключений занимает очень много процессорного времени, да и места в стеке.
Золотое правило такое, нужно относиться к исключению, как к ситуации непредвиденной, т.е. если можешь предупредить некорректные действия, лучше это сделать.