Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Максимальное значение разности двух Pointer`ов.


Страницы:   1 2

LightRipple ©   (2008-06-01 16:57:00) 

Здравствуйте !
Может ли "в реальной жизни" разность двух Pointer`ов не уместиться в integer ?
(разность нам важна со знаком)
Суть в следующем: есть чужая структура с изменяемым размером.
Есть в ней "лишнее" поле ULONG. Вот туда я и хочу запихать эту разность :)


Ум_ще   (2008-06-01 17:34:00) [21]


> Anatoly Podgoretsky ©   (01.06.08 17:27) [10]
> > LightRipple  (01.06.2008 17:23:06)  [6]Pointer это не
> Integer, а Cardinal (DWord)


Анатолий, в каком модуле это определение?


Sha   (2008-06-01 17:31:00) [22]

> LightRipple ©   (01.06.08 16:57)  
> разность нам важна со знаком

Процессор для 32-битового сложения и вычитания использует
одни и те же команды. Есть знак или нет знака - это только в
твоем воображении.

Поэтому если для 32-битовых чисел A=B-C, то всегда будет B=A+C.
И для знаковых и для беззнаковх. Все нормально поместится.
Только на переполнение и на знак не обращай внимания :)


LightRipple   (2008-06-01 17:28:00) [23]

> [8] Ум_ще   (01.06.08 17:25)
> +вспомни, что Delphi не может работать с указателями,превышающими 2Гб памяти

А "другие" умеют ?


Anatoly Podgoretsky   (2008-06-01 17:27:00) [24]

> LightRipple  (01.06.2008 17:23:06)  [6]

Pointer это не Integer, а Cardinal (DWord)


Anatoly Podgoretsky   (2008-06-01 17:26:00) [25]

> LightRipple  (01.06.2008 16:57:00)  [0]

Не может 4 gb(23bit) - 0 = 4 gb, аналогично для 64 бит


Ум_ще   (2008-06-01 17:25:00) [26]

+вспомни, что Delphi не может работать с указателями,превышающими 2Гб памяти


Ум_ще   (2008-06-01 17:23:00) [27]


> Т.е. DWord(Pointer) не может быть больше MAXINT. Так ?


Не так.
Разность не может быть больше.


LightRipple   (2008-06-01 17:23:00) [28]

> [5] Ум_ще   (01.06.08 17:13)

Т.е. DWord(Pointer) не может быть больше MAXINT. Так ?


Ум_ще   (2008-06-01 17:13:00) [29]


> двух Pointer`ов не уместиться в integer ?


Каким образом?
Абсолютное значение (Long)-(Long) не может быть более Abs(Int)


LightRipple   (2008-06-01 17:12:00) [30]

>  [2] SergeyIT   (01.06.08 17:05)
> Да. ULONG <> integer.

Это я знаю. Потому и спросила: "в реальной жизни".


LightRipple   (2008-06-01 17:10:00) [31]

>  [1] Amoeba ©   (01.06.08 17:02)
> А на кой она нужна?

Бывает полезна, когда мы не хотим каждый раз вызывать функцию
для получения адреса, а хотим иметь готовый указатель :)


SergeyIT   (2008-06-01 17:05:00) [32]


> Может ли "в реальной жизни" разность двух Pointer`ов не уместиться в integer ?

Да. ULONG <> integer.


Amoeba   (2008-06-01 17:02:00) [33]


> разность двух Pointer`ов

А на кой она нужна?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо