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

Вниз

Не срабатывает 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 я забыл&#133


 
{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]

> Что такое &#151; NAN?

Not a Number



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

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

Наверх




Память: 0.54 MB
Время: 0.032 c
2-1183748112
000001
2007-07-06 22:55
2007.08.05
TPanel + WS_EX_Transparent + PNG = ...


2-1183810601
Qzzma
2007-07-07 16:16
2007.08.05
Проблемы с кодировками


1-1180103569
DevilDevil
2007-05-25 18:32
2007.08.05
TTabControl VS Manifest


15-1184169984
oldman
2007-07-11 20:06
2007.08.05
Я это сделал!!!


2-1183779664
Человек
2007-07-07 07:41
2007.08.05
Работа с отчётами