Форум: "Начинающим";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
ВнизНе срабатывает try Найти похожие ветки
← →
_Asph © (2007-07-06 11:37) [0]Почему то не срабатывает
try
strtofloat(Edit1.Text);
except
а выдает при проверке свое сообщение?
Что не так?
← →
Kolan © (2007-07-06 11:41) [1]> Что не так?
А end где?
Полный код дай.
← →
Плохиш © (2007-07-06 11:41) [2]Программу надо запускать не из делфи...
← →
Антоныч_ск (2007-07-06 11:43) [3]Сервис->Опции отладчика->Исключения языка->Останавливаться на исключениях Delphi
убери там галочку
← →
Плохиш © (2007-07-06 11:43) [4]
> Kolan © (06.07.07 11:41) [1]
Зачем тебе его код, там всё-равно ничего интересного. Пионэры просто незнают и не хотят знать работу встроенного отладчика :-(
← →
_Asph © (2007-07-06 12:41) [5]
> Сервис->Опции отладчика->Исключения языка->Останавливаться
> на исключениях Delphi
> убери там галочку
Спасибо
> Пионэры просто незнают и не хотят знать работу встроенного
> отладчика :-(
Хотят!!!
← →
Kolan © (2007-07-06 12:49) [6]> Зачем тебе его код, там всё-равно ничего интересного.
Да, про notify on delphi exceptions я забыл…
← →
{RASkov} © (2007-07-06 16:44) [7]> Сервис->Опции отладчика->Исключения языка->Останавливаться на исключениях Delphi
> убери там галочку
Вот не советую этого делать.... )
← →
_Asph © (2007-07-06 17:00) [8]
> Вот не советую этого делать.... )
>
Почему? Пропущу сообщение о котором не догадываюсь?
Хотя отработав это исключение, можно и поставить назад.
← →
Vlad Oshin © (2007-07-06 17:22) [9]ну, вообщето есть
function TryStrToFloat(const S: string; out Value: Extended): Boolean; overload;
if trystrtofloat("34,34",a) then showmessage("ok");
← →
_Asph © (2007-07-06 17:25) [10]
> ну, вообщето есть...
Ну спааасибооооо!!!!
И как же такие находят?
В хелпе в see alse не кажет :(
← →
Stanislav © (2007-07-06 17:26) [11]_Asph © (06.07.07 17:00) [8]
у тебя в рабочей программе, которая без delphi будет работать ошибка выводится все равно небудет.
← →
Vlad Oshin © (2007-07-06 17:44) [12]странно, я как сбившийся свой хелп починил (методом замены работы -> машины -> delphi :)) так все находится стало :)
← →
{RASkov} © (2007-07-06 19:26) [13]> [8] _Asph © (06.07.07 17:00)
> Почему? Пропущу сообщение о котором не догадываюсь?
> Хотя отработав это исключение, можно и поставить назад.
Не надо ничего ставить назад, т.е. как я и советую оставить эту галочку на месте...
Единственное неудобство - так это если происходит исключение в секции try - делфи(отладчик) прервет выполнение и покажет то место где произошло исключение, просто убедившись в этом(исключении) - жмем Ок и F9 и прога работает дальше... Если галочку убрать, то эти исключения будут обрабатываться в "тихую"....
Сам решай нужна она тебе или нет... Для "новичков", которым не суть важно, что там происходит, можно и убрать, но те "новички" автоматом идут не по той дороге :) Более того эта опция действует только на конкретный проект, так, что если остановки в отладчике мешают (бывает в циклах) можно и отключить... или стартовать прогу без отладчика..
← →
{RASkov} © (2007-07-06 19:37) [14]> Если галочку убрать, то эти исключения будут обрабатываться в "тихую"....
Т.е. будет работать секция except...
Например:
галка установленаtry
X:=Y/0; -> Здесь прервет отладчик
except
ShowMessage("Нельзя делить на ноль"); -> после отладчика (F9) покажеться это
end;
галка НЕ установленаtry
X:=Y/0;
except
ShowMessage("Нельзя делить на ноль"); -> покажеться это
end;
НО
В таком случае:Z:=(11*2-20)-2; //Это просто для примера, здесь конечно же все сложнее может быть
try
X:=Y/Z;
except
X:=0;
end;
Без той самой галки, ты и не узнаешь, что X приравнялся 0... и будешь долго вникать почему же программа работает не так как хотелось бы, так как уверен что Z<>0 и соответственно уверенность в том что и секция except не отрабатывается...
← →
Virgo_Style © (2007-07-06 19:47) [15]Я, честно говоря, так до сих пор и не понимаю, зачем это нужно, во всяком случае, в своем проекте.
Бо если я написалexcept X:=0
, то, видимо, мне именно этого и хотелось...
← →
Anatoly Podgoretsky © (2007-07-06 19:52) [16]> {RASkov} (06.07.2007 19:37:14) [14]
> ты и не узнаешь, что X приравнялся 0
X в данном примере никогда не приравняется нулю.
← →
{RASkov} © (2007-07-06 19:54) [17]> [15] Virgo_Style © (06.07.07 19:47)
Согласен.
Но и не зря написал
> Сам решай нужна она тебе или нет...
:)
И, еще раз, если ты "практически уверен"(как это обычно бывает), в расчетах Z не должен быть=0, то порой долго ищешь проблему, а с "галкой" все будет пучком :)
← →
{RASkov} © (2007-07-06 19:58) [18]> [16] Anatoly Podgoretsky © (06.07.07 19:52)
> X в данном примере никогда не приравняется нулю.
Конкретно дословно в данном ?
Z:=0 - исключение при X:=Y/Z(0) Соответственно except и Х:=0
???
← →
{RASkov} © (2007-07-06 20:04) [19]> [15] Virgo_Style © (06.07.07 19:47)
> [16] Anatoly Podgoretsky © (06.07.07 19:52)
Я собственно и не про конкретные переменные или расчеты, а просто хотел рассказать для чего нужна галочка в опциях проекта - [3] и [8]
← →
Anatoly Podgoretsky © (2007-07-06 20:04) [20]> {RASkov} (06.07.2007 19:58:18) [18]
Не надо приводить другой код, я ничего не говорил про этот.
← →
{RASkov} © (2007-07-06 20:15) [21]> [20] Anatoly Podgoretsky © (06.07.07 20:04)
> Не надо приводить другой код, я ничего не говорил про этот.
Анатолий, вот чесное слова не понял..(
Знаю, что хочешь помочь в чем-то, но ... да вот такой я не понятный...(
Где я лажанулся?? У меня в [14] грубо три примера, первые два - они даже не скомпилятся...
остался 3. И в нем я (может быть не явно) хотел показать, что Z=0....
Думаю, смысл-то верно разъяснил в [14] хотя из меня учитель наверное никакой ( Сорри.
и в [18] код... нет - смысл тотже...
:-)
← →
{RASkov} © (2007-07-06 20:15) [22]> чесное слова
*слово
← →
Плохиш © (2007-07-06 20:23) [23]
> {RASkov} © (06.07.07 20:15) [21]
В твоём третьем примере исключение будет намного позже, потому что x будет равно не ноль, как ты ожидаешь, а NAN.
← →
Anatoly Podgoretsky © (2007-07-06 20:25) [24]> {RASkov} (06.07.2007 20:15:21) [21]
Я говорю про код X := Z/0
← →
Anatoly Podgoretsky © (2007-07-06 20:30) [25]> Плохиш (06.07.2007 20:23:23) [23]
Но даже X := Z/A тоже гарантирует исключения, зависит от контрольного слова процессора.
Интел и многие другие требуют чтобы деление на 0 подчинялось правилам математики, а не ошибкам разработчиков на начальных этапах развития компьютерной науки.
Деление на ноль не ошибка, а бесконечность INF
← →
Anatoly Podgoretsky © (2007-07-06 20:30) [26]> Плохиш (06.07.2007 20:23:23) [23]
NAN будет при 0/0
← →
{RASkov} © (2007-07-06 20:44) [27]> [23] Плохиш © (06.07.07 20:23)
> В твоём третьем примере исключение будет намного позже,
> потому что x будет равно не ноль, как ты ожидаешь, а NAN.
Что такое - NAN?
Блин.... из за Y что ли? Прицепились к этому примеру :)
Я же не говорю, что именно этот кусок кода нужно "сувать" в делфи....
Я показал основную часть задуманного... Ну Вот:Y:=10;
Z:=(11*2-20)-2; // = 0
try
X:=Y/Z;
except
X:=0;
end;
ShowMessage(InttoStr(X)); //покажет - 0!
Без "гребаной галки", будет только сообщение - "0", а с ней и остановка в отладчике на строке ->X:=Y/Z;
Я так думаю, что покажет 0, или мне это нужно проверить в Делфи? :)
Пока писал про NAN вроде разъяснили... :)
А вот
> Деление на ноль не ошибка, а бесконечность INF
Это я знаю, но... (задумался) неужели подправленный пример в этом посте - лажа?
у меня D7 - компилятор пока вроде считает такое за "ошибку"....
> [24] Anatoly Podgoretsky © (06.07.07 20:25)
> Я говорю про код X := Z/0
Так оптимизатор такое и не пропустит....
Ладно.... всем спасибо за критику:) Вроде все встало на свои места :)
Можно конечно "превратить" ветку в своеобразную статью, как это обычно на этом форуме делается :)
← →
Плохиш © (2007-07-06 21:26) [28]
> Anatoly Podgoretsky © (06.07.07 20:30) [26]
> > Плохиш (06.07.2007 20:23:23) [23]
>
> NAN будет при 0/0
Да, точно.
← →
Anatoly Podgoretsky © (2007-07-06 21:28) [29]> Так оптимизатор такое и не пропустит....
Не пропустит, если это единственная строка.
← →
Kolan © (2007-07-06 21:53) [30]> Что такое — NAN?
Not a Number
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.045 c