Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Просто кошмар!!! Ln(X), где X < 0 вешает Win98 [D6, Win95/98]


987 ©   (2002-07-25 22:36:00) 

Ln(X), где X < 0 глючит в Win98

Пример: F := Ln(-1.0)

В Win95, WinXP это работает как и подобает, с генерацией "Invalid Floating Point Operation".

То-же в Win98 ругается Internal Error и, часто, Blue Screen of Deth. Но самое интересное, что это происходит (не только на моём компе) не каждый раз, а где-то на каждый 10-й.

Вот пример программы:

programLog;
uses
SysUtils;
var
F: Extended;
begin
repeat
try
F := Ln(-1.0)
except
end
untilFalse
end.


ACR   (2002-07-29 22:47:00) [1]

Думаю если масдайцам пофиг то и Borland"у пабарабану....
тут читил у Borland"a отрифки из чатов с програмистами из проекта Builder C++, там адин чел спрашивает типа уменя все глючит, нифига ниработает, типа ваще атстой... иму грят типа а какая OS? он типа Win98... ну и ему культурна так атвичают типа засунь ее себе куданить не еб%%и мозг и паставь NT .. так-та


987   (2002-07-29 22:38:00) [2]

Прерывания от FPU не Борланд а Windows ловит. Полное гавно. А если Борланду написать? Они хоть читают?


987   (2002-07-29 22:36:00) [3]

А что, в VC++ тоже так?


987   (2002-07-29 22:32:00) [4]

Ничего в Math.pas не проверяется. А с чего взяли, что if с вещуственными аргументами будет быстро работать?


Denvor   (2002-07-28 03:16:00) [5]

Я вот недавно компилировал проэкт, тоже с явной ошибкой через try ...except. Самое интересное, что пока компилировал Делфа всё время выдавала ошибку, а запустил так, как программу, так всё прекрасно работало. Может Делфа обработчики ошибок при компиляции опускает, чтобы программер мог все ньюансы видеть?
А ты найди модуль Math.pas и посмотри что там происходит, если присылается недопустимый аргумент. Можешь подправить, как тебе удобно.


Mystic   (2002-07-27 23:50:00) [6]

Я сам натыкался на подобные грабли, только под ME и с Sqrt.

Проверка if X > 0.0 спасла ситуацию, правда ее не всегда приятно вставлять, если вычислений много.


Юрий Зотов   (2002-07-27 17:40:00) [7]

> Direx (27.07.02 10:37)

Это Вы мне, или постановщику вопроса?


Direx   (2002-07-27 10:37:00) [8]

> Это-же очень медленно!!!
> ... Именно, что только try..except

А вам не кажется, что время работы if"а настолько меньше времени работы ln, что подобный вопрос даже ставить глупо?


ACR   (2002-07-27 01:57:00) [9]

смешно канешно но на a = b / c, при с=0 если a,b,c Extended Win98 тоже падает, а если int то все в парядке, вообще любые операции с сопроцессором которые вызываю ошибку а соответственно и прерывание... запросто могут павешать винды... можно атключить генерацию прерываний сопрацессара но тагда и исключений небудет... вобщем M$ Х... Бл.. Пи.. .ры ....


Юрий Зотов   (2002-07-27 01:14:00) [10]

> Это-же очень медленно!!!
> ... Именно, что только try..except

Ох, сдается мне, что try..except будет НАМНОГО медленнее, чем обычное if X > 0 then...

Защищенные блоки - штука очень мощная и очень удобная, но ДАЛЕКО не "бесплатная". Одна лишь реализация их стекового механизма обходится НАМНОГО "дороже" простого IF. И по скорости, и по памяти.


987   (2002-07-26 22:48:00) [11]

Так делать нельзя. Это-же очень медленно!!! Хорошо, если нужно проверить при вводе юзера. А если надо 1000 раз в секунду? Именно, что только try..except. Только как?

А это только на Дельфи? Если на каком нибудь VC++?


IlyaA   (2002-07-26 12:45:00) [12]

А на кой тебе такое. Проверяй X > 0. Не фиг честных людей в заблуждение вводить.

А можно доопределить Ln на (-бесконечнось,0] и назвать его лагорифмом 987-го эксперементатора.


Слесарь Матерящийся   (2002-07-25 23:04:00) [13]

Просто здОрово!

Система САМА приучает программеров к дисциплинированности!

Прекрасно!


Наверх

Титульная страница Поиск, карта сайта Написать письмо