Вниз
Скачать: 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 вся ветка

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



Память: 0.61 MB
Время: 0.016 c
14-23400
Vlad Oshin
2003-04-16 10:13
2003.05.08
Прошу помощи. Проверте пожалуйста ссылку. У меня таймаут


11-23052
Alexei Dragoner
2002-07-31 13:33
2003.05.08
Еще пару глюков...и вопросов


6-23259
Alta
2003-03-13 09:54
2003.05.08
програмка для локальной сети


3-22967
denis24
2003-04-17 11:41
2003.05.08
ширина слобца в гриде


14-23322
race1
2003-04-13 15:17
2003.05.08
мнемотехника




   Наверх