Форум: "Потрепаться";
Поиск по всему сайту: 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.019 c
14-81079          Helpwuin              2002-03-21 14:14  2002.04.25  
ХЕ ХЕ


3-80804           Labert                2002-04-05 10:57  2002.04.25  
TBDEDataset.Locate


3-80738           Olex                  2002-04-05 21:36  2002.04.25  
Как убрать запрос логина и пароля при обращении к БД Аксес...


1-80842           Schummi               2002-03-30 08:12  2002.04.25  
В чем error?


3-80778           DEJRGU                2002-04-04 14:51  2002.04.25  
Есть ли в TSQL какая-нибудь pause ? (чтобы проверить sp)