Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Вниз

Константные выражения 


Виктор Щербаков   (2002-03-19 13:44) [0]

procedure TForm1.Button1Click(Sender: TObject);
const a = 3 / 0;
begin
Caption := FloatToStr(a);
end;

Интересно, почему при компиляции не выдается ошибка "деление на ноль". Вместо этого при нажатии на Button1 в Caption формы появляется INF. Есть в этом какой-то смысл или просто глюк?

ЗЫ: Проверял на D5



DieHard   (2002-03-19 14:08) [1]

Хм, на D4 то же самое...



Фэ   (2002-03-19 14:10) [2]

Занятно.
3 div 0 не пропускается, однако.



Виктор Щербаков   (2002-03-19 14:13) [3]

Сейчас проверил на D3. Та же фигня.
Если разработчикам Borland нужен был символ для обозначения бесконечности, сделали бы его предопределенной константной как nil, true, false. Пусть программист явно его укажет.
А так, только ошибки плодить!



MBo   (2002-03-19 14:14) [4]

const
c=3;
d=0;
a = c / d;
e = c div d;// а эта строчка не проходит ;)



DieHard   (2002-03-19 14:20) [5]

А почему
const
a = Int(3);
не проходит?
Int ведь определена как дозволительная в константных выражениях



Виктор Щербаков   (2002-03-19 14:24) [6]

Int не разрешена.
Можно только:
Abs Chr Hi High Length Lo Low Odd Ord Pred Round SizeOf Succ Swap Trunc



DieHard   (2002-03-19 14:25) [7]

Извиняюсь, не заметил в хелпе слово except перед пречислением функций :)



DieHard   (2002-03-19 14:35) [8]

Итак, константы от Borland
1/0 = +INF
-1/0 = -INF
0/0 = -NAN
-(0/0) = +NAN



Фэ   (2002-03-19 14:42) [9]

Насчет NAN известно, а вот INF первый раз попалась



Иван Шихалев   (2002-03-19 21:20) [10]

Эти константы правда у Borland определены? А то, AFAIK, они замечательно определены в ассемблере i387, но в Pascal я их не помню.



Юрий Зотов   (2002-03-19 21:26) [11]

Век живи - век учись...

Интересно, а опция overflow checking {$Q+} на это как-то влияет, или нет?



Anatoly Podgoretsky   (2002-03-19 21:54) [12]

Виктор Щербаков © (19.03.02 13:44)

Глюка нет все нормально, ситуация разрешается на стадии компиляции, а ошибка "деление на ноль" это run-time ошибка.




Форум: "Потрепаться";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.035 c
14-81066          Fellomena             2002-03-18 18:46  2002.04.25  
Возможна ли связка *.lib от Фортрана с Delphi проектами ?


1-80923           K@tusha               2002-04-11 13:33  2002.04.25  
Перевеси цветную палитру в черно-белую


3-80828           SasaR                 2002-04-05 15:24  2002.04.25  
Без BDE


1-80869           lipskiy               2002-04-13 14:43  2002.04.25  
Как по простому выявить неиспользуемый в программе код?


3-80744           Lego                  2002-04-02 02:35  2002.04.25  
Наверное глупый вопрос... но все-же... какие файлы нужны клиенту?