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

Вниз

Целочисленный тип для операций с указателями   Найти похожие ветки 

 
PinDOS   (2010-08-24 21:57) [0]

Здравствуйте уважаемые мастера!

Для простых операций с указателем (Pointer) всегда применял тип Cardinal. К примеру
Cardinal(P1) := Cardinal(P2) + 4;
Но что делать если компилятор будет 64-разрядным, Pointer тогда занимает 8байт, а Cardinal так и останется 4. В FPC сделан отдельный целочисленный тип для таких операций. Как называется такой тип в делфи (если он есть)?

Спасибо!


 
QAZ   (2010-08-24 22:08) [1]

как тока делфя станет х64 то сразу Pointer64 появится ну а Int64 уже есть


 
Eraser ©   (2010-08-24 22:42) [2]

> [0] PinDOS   (24.08.10 21:57)

Cardinal станет 64 разрядным.

> Cardinal(P1) := Cardinal(P2) + 4;

таких записей лучше избегать или писать так
Cardinal(P1) := Cardinal(P2) + SizeOf(Pointer);


 
PinDOS   (2010-08-24 22:57) [3]


> 4

просто число, это для примера, можно 124
> как тока делфя станет х64 то сразу Pointer64 появится ну
> а Int64 уже есть

оно то появится, вот только:
QWord(P1) := QWord(P2) + 124; // в 32х битной системе будет не знаю что
// и хотелось бы избежать этого
// в то время как
Cardinal(P1) := Cardinal(P2) + 124; // в 64-битной системе результат будет неверный


в FPC
PtrUInt(P1) := PtrUInt (P2)  + 124; // будет верный результат и на 32 и на 64 битной системе


 
sniknik ©   (2010-08-24 23:24) [4]

> в FPC
> PtrUInt(P1) := PtrUInt (P2)  + 124; // будет верный результат и на 32 и на 64 битной системе
т.е. они integer-у синоним придумали? молодцы какие...


 
sniknik ©   (2010-08-24 23:26) [5]

http://delphimaster.net/view/2-1282567015/
а, понял, лавры FPC покоя не дают. решил переплюнуть, на одном синониме не останавливаться.


 
PinDOS   (2010-08-24 23:57) [6]


> лавры

-----------------------------
Система       Тип       Размер
-----------------------------
32 бита      Cardinal        4
                Pointer        4
                PtrUInt        4
-----------------------------
64 бита      Cardinal        4
                Pointer        8
                PtrUInt        8
-----------------------------
4, оно не равно 8, в этом есть скрытый смысл


 
sniknik ©   (2010-08-25 00:18) [7]

Cardinal, оно не равно integer, в этом есть скрытый смысл


 
PinDOS   (2010-08-25 00:20) [8]


> Cardinal, оно не равно integer, в этом есть скрытый смысл

ни в одном моем комментарии до сего не было упоминания типа integer (PtrUInt - Pointer Unigned Integer)


 
sniknik ©   (2010-08-25 00:25) [9]

> т.е. они integer-у синоним придумали? молодцы какие...


 
sniknik ©   (2010-08-25 00:33) [10]

Сергей М. ©   (23.08.10 17:40) [6]

> что бы разрядность выбирал я, а не компилятор

Ну и выбирай себе на здоровье из имеющихся)
Зачем свои-то типы плодить без явной надобности ?
Просто не используй типы Integer и Cardinal - они платформозависимы

после этого сомнения что то, что
> 64 бита      Cardinal        4 <-- вот в этом

ты вообще чего хочешь? выбирать разрядность самому это прямо противоположное тому, что в этой ветке, чтобы типы были платформозависимы.


 
Германн ©   (2010-08-25 02:43) [11]


> ты вообще чего хочешь?

Тут что-то родственное мне железячнику, имхо.
Автор использует packed record и хочет добиться совместимости с любым компилятором паскаля.
Зачем это нужно - это вопрос к автору.


 
Anatoly Podgoretsky ©   (2010-08-25 06:43) [12]

> PinDOS  (24.08.2010 23:57:06)  [6]

> 64 бита      Cardinal        4

Ты это сам придумал, или тебе Борланд сообщил?


 
PinDOS   (2010-08-25 12:11) [13]

С вопросом разобрался, компилятора Delphi 64 нету, просто написал с использованием директив ifdef что в делфи PtrUInt = DWord;
Трудно было просто ответить, почему надо троллить

> Anatoly Podgoretsky

я это взял из документации FPC (http://wiki.freepascal.org/Integer)

> sniknik

я не хочу что бы получилось Access violation at adress ... из-за того что платформозависимый тип "пересекся" с платформонезависимым

> Германн

спс за совет

Спасибо)


 
Anatoly Podgoretsky ©   (2010-08-25 12:44) [14]


> я это взял из документации FPC

Это другой продукт, к Дельфи отношения не имеет. Да хоть размером в байт, их право.



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

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

Наверх




Память: 0.5 MB
Время: 0.009 c
6-1229006287
dmitry_12_08_73
2008-12-11 17:38
2010.11.21
Компонент для закачки файла по LAN


15-1280781000
Юрий
2010-08-03 00:30
2010.11.21
С днем рождения ! 3 августа 2010 вторник


6-1229289935
ZIlog
2008-12-15 00:25
2010.11.21
TWebBrowser и заполнение формы.


15-1281542278
ixen
2010-08-11 19:57
2010.11.21
Обновление OpenOffice.org


15-1281125385
Кто б сомневался
2010-08-07 00:09
2010.11.21
Как запустить lnk сети программно?