Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
15-1281510965
AlexDn
2010-08-11 11:16
2010.11.21
Движок Вконтакте


15-1281519043
@!!ex
2010-08-11 13:30
2010.11.21
Можно ли доверять им?


15-1281383797
М. Береговой
2010-08-09 23:56
2010.11.21
Будет землетряс или не будет? :-)


2-1282880802
Гость
2010-08-27 07:46
2010.11.21
Существует ли аналог Википедии по функциям Дельфи?


2-1282818621
abun
2010-08-26 14:30
2010.11.21
Манифест для Windows XP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский