Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
ВнизПочему допустимо 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;
Скачать: [xml.tar.bz2];
Память: 0.61 MB
Время: 0.018 c