Вниз
Скачать: CL | DM;

Константные выражения   Найти похожие ветки 

← →
Виктор Щербаков ©   (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 ошибка.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
1-80995
Emstem
2002-04-12 14:05
2002.04.25
Генерация событий в классе


3-80807
ser_ker
2002-03-04 15:37
2002.04.25
Как передать IBStoredProc через параметр типа Blob содержимое файла на диске ?


14-81035
lipskiy
2002-03-19 03:10
2002.04.25
Как Аську 2001b под Win2k заставить видеть коннект и дисконнект?


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


4-81117
BVS
2002-02-06 17:15
2002.04.25
Как создать динамический масив?




   Наверх