Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.05 c
14-1097652274
Обыватель
2004-10-13 11:24
2004.10.31
стоит ли покупать Win принтер?


14-1097236559
vecna
2004-10-08 15:55
2004.10.31
Вот такое вот гуманное общество


1-1097946763
DIS
2004-10-16 21:12
2004.10.31
остановить таймер


1-1098176816
Eyfel
2004-10-19 13:06
2004.10.31
Delphi 8.net + NetFramework Update


14-1097137982
КаПиБаРа
2004-10-07 12:33
2004.10.31
Пишу ТЗ.





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