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

Вниз

Delphi bugs   Найти похожие ветки 

 
Saintdmitry ©   (2004-10-12 23:39) [0]

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

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

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


 
TUser ©   (2004-10-12 23:45) [1]


> Saintdmitry

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

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


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

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

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


 
Saintdmitry ©   (2004-10-13 08:46) [3]

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

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

E : Extended;
R : real;

E := 1.1;
R := 1.1;

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


 
Fedia ©   (2004-10-13 08:56) [4]

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


 
Kolan ©   (2004-10-13 10:34) [5]

Так 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 дроби


 
Amoeba ©   (2004-10-13 11:07) [6]


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

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


 
TUser ©   (2004-10-13 11:12) [7]


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

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


 
Amoeba ©   (2004-10-13 11:25) [8]


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

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


 
Saintdmitry ©   (2004-10-13 11:57) [9]

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


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


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

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


 
KSergey ©   (2004-10-13 13:12) [11]

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

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


 
Anatoly Podgoretsky ©   (2004-10-13 13:26) [12]

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


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


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

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


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

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

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



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

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

Наверх




Память: 0.5 MB
Время: 0.024 c
9-1088381001
Xerx
2004-06-28 04:03
2004.10.31
OpenGL без VCL


1-1098205530
Sirruf
2004-10-19 21:05
2004.10.31
Alignment in TEdit


3-1096624461
stud
2004-10-01 13:54
2004.10.31
использование параметра в хранимой процедуре


4-1096187642
HDD
2004-09-26 12:34
2004.10.31
Как создать Лэибл на WinApi?


14-1097244081
twilight
2004-10-08 18:01
2004.10.31
Про Worms Armageddon