[fpc-pascal] Some features I use daily in FPC I hope

Jason P Sage jasonpsage at jegas.org
Fri Feb 23 01:26:46 CET 2007


Daniel Mantione Wrote:

>This isn't true:
>* Cardinal: is always an unsigned 32-bit integer
>* Pointer: can be 32-bit or 64-bit depending on processor
>* Integer: is a signed 16-bit or 32-bit integer depending on compiler mode

And you are absolutely correct. I forget this because I have the FPC
configuration set to always use the 32 bit sized integer. 

As for Cardinal being only 32bit - that stinks because it's a major
oversight on my part. Is there a data type equivalent to Cardinal for
64-bit? I mean - I tried to use a gambit of "processor size" independent
variables for doing "low level" stuff - like pointer math.

Cardinal - Unsigned, can use write statements, can convert to and from text
- perfect. Is there anyway it could be made 64bit? Or Platform size
independent variables could be made besides pointer?

Darn...this means code I thought was all nicely converted for 64 bit - is
going to be useless. ...sigh...

Then what I was thinking was wrong. I hope someday there is a platform size
based variable like pointer is for Cardinal and Integer.

---

Marc Santhoff Wrote:

>Since you're fiddling with low level stuff and I had a problem similar a
>while ago:

>Do you see a way of calculating the offset using types instead of
>variables? Using your example I would like to use something like:

>uMyCardinalOffset:=cardinal(rtMyRecord.saMyEmail);

Not quite - more like:
uMyCardinalOffset:=cardinal(rtMyRecord(nil^).saMyEmail;

I'n not sure I answered your question - and it is very clean mark - however,
as the above states - I just got correct by Daniel on something that just
impeded my ability to take my code to the 64 bit level without some major
work. 

I was mistakingly under the impression that Pointer, Integer, and Cardinal -
would grow with the platform size like pointer does. This limits me as to
what I can do for fancy pointer operations - as there isn't much in the way
of converting a pointer to a platform sized unsigned integer safely on 64bit
platform. 

This is rather upsetting. My fault... but upsetting nonetheless.

I do hope I answered your question - I mean, if I understood your original
question about getting the offset with types versus variables - I think the
syntax I wrote above does what you are asking.

Best Regards All,
Jason P Sage




More information about the fpc-pascal mailing list