Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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 я забыл&#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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.045 c
15-1183383347
VirEx
2007-07-02 17:35
2007.08.05
String -> TControl


1-1180453969
Stenfit
2007-05-29 19:52
2007.08.05
*.CHM


2-1184075846
Knob
2007-07-10 17:57
2007.08.05
Отрезок изображения


1-1180370317
Fman
2007-05-28 20:38
2007.08.05
КОД из ASM в Delphi


2-1184119709
Biggelow
2007-07-11 06:08
2007.08.05
RC4





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