[fpc-devel] SizeOf( const typcasted as shortstring)
Martin
fpc at mfriebe.de
Mon Aug 13 02:34:46 CEST 2018
On 13/08/2018 02:32, Martin wrote:
> On 13/08/2018 00:12, Dmitry Boyarintsev wrote:
>> On Sun, Aug 12, 2018 at 5:40 PM Bart <bartjunk64 at gmail.com
>> <mailto:bartjunk64 at gmail.com>> wrote:
>>
>> const
>> x = ShortString('abc');
>> begin
>> writeln(SizeOf(x));
>> end.
>>
>> Delphi (7) prints 256, fpc prints 3.
>>
>> Is that a bug or an implementation detail?
>>
>> Implementation detail.
>> And it seems to be wrong on Delphi size, because for reason it
>> assigns a type to a (non-typed) constant.
>>
> Interesting.
>
> Yet the compiler still seems to add some type or at least type
> specific behaviour. (That alone is ok)
>
> But if the first string has the length in a[0], then that constant has
> 6 bytes of data. Yet sizeof only reports 5.
> So what is the real size of this constant?
>
>
> program Project1; {$H+}
> const
> a = 'abcde';
> b = 'abcde
> 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
> begin
> writeln(SizeOf(a)); // 5
> writeln(SizeOf(b)); // 5
copy and paste, this on prints the length of b
> writeln(byte(a[0])); // no range check / shortstring has index 0 with
> length
> writeln(byte(b[0])); // range check / not a shortstring
> readln;
> end.
>
>
>
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20180813/c810976a/attachment.html>
More information about the fpc-devel
mailing list