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

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

Delphi bugs [D6, D7, Win2k, WinXP]


Saintdmitry ©   (2004-10-12 23:39:00) 

Недавно пришлось программировать на Delphi7(6) и вот, что обнаружил:

- нет сравнения real c константами и Extended
- не работает TDbComboBox

Что-то мне подсказывает, что это лишь малая часть, может кто сможет дополнить, было бы очень интересно услышать что меня ещё ждёт.


KSergey   (2004-10-13 14:27:00) [1]

> [12] Anatoly Podgoretsky ©   (13.10.04 13:26)
> Меня еще в первом классе учили, не надо сравнивать числа
> с плавающей запятой.

... на равенство
На неравенство - можно.


Плохиш   (2004-10-13 13:36:00) [2]


> Anatoly Podgoretsky ©   (13.10.04 13:26) [12]

Как за это время школа изменилась :-)


Anatoly Podgoretsky   (2004-10-13 13:26:00) [3]

Меня еще в первом классе учили, не надо сравнивать числа с плавающей запятой.


KSergey   (2004-10-13 13:12:00) [4]

Этим страдают не языки, а авторы программ.

PS
На это я налетел в самой первой своей написанной проге на васике... но это уже другая история...


Amoeba   (2004-10-13 12:02:00) [5]


> Saintdmitry ©   (13.10.04 11:57) [9]
> Приведите пример ещё языков. которые такой фичей страдают?
> Мне на ум ничего не приходит.

Языки здесь абсолютно ни при чем!Это ФИЧА НЕ ЯЗЫКА А ЖЕЛЕЗА! Еще раз настоятельно советую прочесть это http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374и не страдать фигней.


Saintdmitry   (2004-10-13 11:57:00) [6]

Приведите пример ещё языков. которые такой фичей страдают?
Мне на ум ничего не приходит.


Amoeba   (2004-10-13 11:25:00) [7]


> Другой вопрос, поечему такая разница появилась.

Это фича, но не Delphi, а сопроцессора.
См. ссылку в Amoeba ©   (13.10.04 11:07) [6]


TUser   (2004-10-13 11:12:00) [8]


> if abs(E-R)>0.000001 then. И таких глюков в Delphi немного

Это не глюк, а фича. Есть разница 10^-17, значит числа не равны. Другой вопрос, поечему такая разница появилась.


Amoeba   (2004-10-13 11:07:00) [9]


> - нет сравнения real c константами и Extended

Так и должно быть. Дельфи здесь ни при чем, сие есть так сказать "закон природы". Читаем статью "Неочевидные ососбенности вещественных чисел" http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
до полного просветления.


Kolan   (2004-10-13 10:34:00) [10]

Так E : Extended;
R : real;

E := 1.1;
R := 1.1;

E - R порядка 1.7 * exp(-17);
т.е. (E = R) - ложь
может это из за представления чисел

Например
var
e:real;
begin
e:=0.1;
if e=0.1 then ...
else
...
так вот будет не равно из за того что intel работает только с 10-байтным типом Extended. И в e вместо 0.1 будет то что можно представить в виде конечной 2 дроби


Fedia   (2004-10-13 08:56:00) [11]

Saintdmitry ©   (13.10.04 08:46) [3]
есть такая буква в этом слове :)
Скажу больше, даже в случае сравнения переменных одного типа (н-р Double), с одинаковыми значениями, могут возникать такие глюки, но это легко можно обойти: if abs(E-R)>0.000001 then. И таких глюков в Delphi немного, в процентах от первоклассно работающего стандартного кода.


Saintdmitry   (2004-10-13 08:46:00) [12]

KSergey, а вы с ним работали?
Судя по исходным кодам он мало отличается от TComboBox.

TUser, вот пример:

E : Extended;
R : real;

E := 1.1;
R := 1.1;

E - R порядка 1.7 * exp(-17);
т.е. (E = R) - ложь


KSergey   (2004-10-13 07:14:00) [13]

Про какой-то ComboBox помнится было обсуждение - в D7 действительно имеется ошибка. Поправлена в сервиспаке.

Вот только о том ли речь?? Да и чтобы прям вот "совсем не работало"?? Что-то с трудом верится.


TUser   (2004-10-12 23:45:00) [14]


> Saintdmitry

Одит Великий Дима тут уже есть. Но изменеия уже заметны, что отрадно.

По сабжу - кода нет, ничего понять нельзя - чего не работает и как не сравнивается?


Наверх

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