[fpc-pascal] Assigning pointer address
Tomas Hajny
XHajT03 at hajny.biz
Mon Oct 1 10:51:42 CEST 2012
On Mon, October 1, 2012 10:43, dhkblaszyk at zeelandnet.nl wrote:
Hi,
> I want to ask if casting an integer to a pointer is valid
> over all platforms. See below:
>
> p: PInteger;
> v: longint;
>
> [...]
>
> v :=
> 4235423;
>
> p := PInteger(v);
>
> Of course, the value of the pointer
> adress may vary, but in general is this a valid way to assign a pointer?
> Or will some platforms or architecture give problems?
Use PtrInt (signed) or PtrUInt (unsigned) types instead of longint, etc.
The former two are guaranteed to work for all architectures and platforms.
Your particular example fails on all 64-bit architectures (among others)
immediately.
Tomas
More information about the fpc-pascal
mailing list