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

Вниз

Почему допустимо integer(<адрес в памяти>) ?   Найти похожие ветки 

 
Palladin ©   (2003-04-18 01:03) [80]


> Но вот почему следующий код вызывает исключение ?
>
> {$Q-}
> i:=$7FFFFFFF;
> i:=i+1;
> {$Q+}


вот такой код не вызовет исключений при любом Q
проверено

i:=$7fffffff;
p:=pointer(integer(i)+1);


 
Giemgo   (2003-04-18 20:34) [81]

вот такой код не вызовет исключений при любом Q
проверено

i:=$7fffffff;
p:=pointer(integer(i)+1);


ТЫ ПЕРЕГРЕЛСЯ ЧТО ЛИ ? Все таки это ТЫ не догоняешь, судя по всему. Уж разбирись, пожалуйста сам. А то на меня наезжал, наезжал...


 
Palladin ©   (2003-04-18 22:31) [82]

нет не перегрелся...
не выспался...


 
Giemgo   (2003-04-19 11:44) [83]

Люди, остался непонятным один вопрос!

По идее {$Q+} говорит компилятору, что должен быть сгенерирован код проверки переполнения. Но пчему при таком коде вылезает переполнение:

{$Q-}
i:=$7FFFFFFF;
i:=i+1;
{$Q+}

Почему ?! Ведь сначала стоит {$Q-} ! Причем, если нижний {$Q+} убрать, то все ок...

СТРАННО !

P.S. А у вас тоже так ? Может такой глюк у моей дельфи ?


 
Giemgo   (2003-04-19 17:23) [84]

Неужели никто не просветит меня ?

Или я всем надоел ? Могу ник сменить


 
Giemgo   (2003-04-19 23:05) [85]

Удалено модератором
Примечание: Еще один ап и будет даун


 
Giemgo   (2003-04-20 12:58) [86]

Удалено модератором


 
Giemgo   (2003-04-21 22:44) [87]

Ну я наверное плохо объясняю...

{$Q+} по идее включает проверку переполнения. {$Q-} выключает.
Но почему то Exeption выскакивает в таком коде

{$Q-}
i:=$7FFFFFFF;
i:=i+1;
{$Q+}

А ведь тут сначала идет {$Q-}, а потом {$Q+}


 
Giemgo   (2003-04-23 21:29) [88]

Мастера, ну уделите внимание то !


 
jack128 ©   (2003-04-23 21:36) [89]

$O + F1
RTFM


 
Giemgo   (2003-04-24 23:31) [90]

jack128, а это здесь при чем ? Оптимизация выключена. Ты бы повнимательнее на вопрос посмотрел !

Дело в том, что код ДОЛЖЕН выдавать исключение, когда идет директива {$Q+} !!! ПЛЮС !

А он выдает исключение ТАКЖЕ если идет сначала минус, а потом плюс !!!

{$Q-}
i:=$7FFFFFFF;
i:=i+1;
{$Q+}


 
jack128 ©   (2003-04-24 23:57) [91]


> {$Q+} по идее включает проверку переполнения. {$Q-} выключает.
Каким образом вкл/выкл оптимицации должно вкл/выкл проверки переполнения??


 
MBo ©   (2003-04-25 00:09) [92]

Если бы ты не был так по-идиотски настырен, то тебе давно бы уже ответили, что многие опции действуют на процедуру или функцию в целом - стековый фрейм должен быть единообразен.
Если в процедуре есть {$Q+}, вся она компилируется с проверками.
Это можно увидеть в ассемблерном коде.
Читай книжки, и сам разбирайся.


 
Anatoly Podgorestky   (2003-04-25 00:14) [93]

И я про то же, давно болт заложили :-)


 
Giemgo   (2003-04-25 19:41) [94]

MBo, если вы такой злой - не надо на меня это переносить.
Я настырный ? Возможно, но это из-за того, что я не понимаю. Поэтому и задаю вопросы. Вы считаете, что если бы я не поднимал тему мне бы ответили ? :)
И вообще, тут многие неправильно отвечали (в том числе и вы в расчете битовых чисел), поэтому чтобы не было путаницы я лучше переспрошу и задам несколько вопросов.

Спасибо большое за ответ. У меня опять маленький вопросик. Такой код не вызывает исключения:

{$Q+}
i:=$7FFFFFFF;
i:=i+1;
{$Q-}

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


И я про то же, давно болт заложили :-)

обидно читать


 
Anatoly Podgoretsky ©   (2003-04-25 19:44) [95]

Но ведь правда, к дисскуссии больше ни кто не подключается.



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

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

Наверх




Память: 0.63 MB
Время: 0.029 c
1-23123
Альберт_
2003-04-27 18:09
2003.05.08
Как определить ширину строки


3-22914
Rocker
2003-04-19 09:48
2003.05.08
Базы данных TTable


8-23247
linco
2003-01-30 08:55
2003.05.08
Перемещаемая линия?


3-22929
softmaster
2003-04-20 19:11
2003.05.08
По группировке НДС


14-23334
Рыжий Вася
2003-04-19 17:41
2003.05.08
Как преобразовать отсканированный текст