[fpc-pascal] Re: pchar with more than 255 characters
michael.vancanneyt at wisa.be
michael.vancanneyt at wisa.be
Wed Nov 16 17:08:57 CET 2011
On Wed, 16 Nov 2011, Rainer Stratmann wrote:
> Am Monday 14 November 2011 22:00:28 schrieb Jonas Maebe:
>> On 13 Nov 2011, at 14:02, Rainer Stratmann wrote:
>>> Am Sunday 13 November 2011 02:15:07 schrieb leledumbo:
>>>> It works when {$LONGSTRINGS ON} or {$H+} directive exists. I think the
>>>> compiler treats functions receiving array of char (or pointer to it) as
>>>> ShortString when none of the directives above exist.
>>>
>>> No it does not work then.
>>> I put already the -Sh- additional compiler arg.
>>
>> -Sh- Is the same as {$h-} or {$longstrings off}. You need -Sh (provided
>> that there's no {$mode fpc/objfpc/tp/macpas} in the source file, since that
>> will disable them again).
>
> With {$h+} it works.
>
> But when having pchar I wonder why it generally is not possible to make
> strings longer than 255 as it was possible in the previous compiler version.
>
> For shortsting I accept strings not longer than 255 chars.
>
> Why is it not possible to make a var like
> svar : shortstring[ 20 ] ?
Because the definition of the type 'ShortString':
ShortString = String[255];
is somewhere in the ObjPas or system unit.
If the compiler finds a size after the 'String' keyword, it automatically
assumes a "shortstring" (by this I mean the compiler internal's idea of
"shortstring").
The definition of 'Shortstring' as shown above is just an aid, for Delphi
compatibility.
Michael.
More information about the fpc-pascal
mailing list