[fpc-pascal] Pchar from constant string

Michael Van Canneyt michael at freepascal.org
Fri Jun 30 11:11:26 CEST 2023



On Fri, 30 Jun 2023, Hairy Pixels via fpc-pascal wrote:

>
>
>> On Jun 30, 2023, at 9:03 AM, Hairy Pixels <genericptr at gmail.com> wrote:
>>
>> That's why that worked. Hmm with short strings the null terminator could be truncated when copying right? Something to look out for.
>
> this is what I meant about truncation. S is no longer null terminated and now the pchar will fail when passed to C libraries right?
>
> var
>  s: String;
>  p: Pchar;
> begin
> 	s := 'hello';
> 	p := @s;

S will still be null-terminated for ansistrings and shortstrings.

change to

   s:=s+s;
   p:=@s[1]; // and not @s
   writeln(p[Length(s)+1]=#0);

and it will print TRUE.

Michael.


More information about the fpc-pascal mailing list