[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