Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-23146
Эльман
2003-04-23 06:16
2003.05.08
Работа с MS Word через COM


14-23304
acsoft
2003-04-18 14:59
2003.05.08
Устал мучаться с написанием плагинов.


14-23281
Денис
2003-04-18 11:50
2003.05.08
Delphi + IE


14-23378
mixamixa
2003-04-20 20:25
2003.05.08
Где взять стаднартные иконки (копировать, принет)?


3-22922
adogg
2003-04-19 16:38
2003.05.08
Работа с DAODataSet





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский