[fpc-pascal] working witg UCS4Char

Tomas Hajny XHajT03 at hajny.biz
Fri Nov 9 17:56:48 CET 2012


On Fri, November 9, 2012 17:38, ik wrote:
> On Fri, Nov 9, 2012 at 6:12 PM, Tomas Hajny <XHajT03 at hajny.biz> wrote:
>> On Fri, November 9, 2012 17:01, ik wrote:
>>> On Fri, Nov 9, 2012 at 5:16 PM, Jonas Maebe <jonas.maebe at elis.ugent.be>
>>> wrote:
>>>> On 09 Nov 2012, at 16:06, ik wrote:
>>>>
>>>> And if I do it without the hash, then it's just a number
>>>>
>>>>
>>>> UCS4Char is in fact just a number, and UCS4String is just a dynamic
>>>> array of
>>>> cardinal. UCS4 is not implemented as a complete string type in FPC (or
>>>> Delphi, for that matter).
>>>
>>> Cardinal is a bit problematic type, you mean longword. :)
>>
>> Why do you see cardinal as a "problematic type"? At least for FPC it is
>> a
>> simple alias to longword (and it has actually existed even before
>> longword
>> in FPC).
>
> At least with Delphi it has unclear what exactly the size of it.
> And the following code:
> https://github.com/ik5/fp-msgpack/blob/master/src/msgpack.pas#L528
>
> Used to be with Cardinal (the only difference), and It never acted as
> expected.
> The only thing I changed was from cardinal to longword, and it acts as
> expected.

With Delphi or with FPC? As already mentioned, FPC defines cardinal as an
alias to longword (and UInt32 mentioned in your reference as an alias to
cardinal) so there should be no difference between cardinal, longword and
UInt32 (and in the past, cardinal was even the primary type in FPC
directly known by the compiler).

With Delphi, I believe that very old Delphi versions defined cardinal as a
31-bit type (i.e. simply the non-negative part of the longint range), but
I also believe (while not using Delphi at all myself) that all currently
relevant Delphi versions (i.e. not considering things like Delphi 1.0 and
Delphi 2.0 which probably didn't support longword anyway) define cardinal
as equal to longword.

Tomas





More information about the fpc-pascal mailing list