[Lazarus] strcat problem

José Mejuto joshyfun at gmail.com
Fri Jun 24 02:33:27 CEST 2016

El 23/06/2016 a las 21:08, Koenraad Lelong escribió:
> Op 23-06-16 om 16:58 schreef David W Noon:
>> [snip]
>>> cTekst:=#13'Now is the winter of our discontent'#13;
>> You need a trailing #0 byte on the end.
> The definition of cTekst :
> var
>    cTekst : PChar;
> So the compiler knows cTekst is a 0-terminated string doesn't, it ?
> And StrCat needs two parameters : PChar and PChar. So I think the
> compiler knows the strings are zero-terminated.
> Besides, on my OpenSuse-box it works, or is that by chance ?


Did you allocated the memory for the pchar ? Did you allocated memory 
enough in target pchar to hold the large string after the strcat's ?

This code sample is wrong:

strcat(cTekst,'other string');

The first assigns pchar to a read only memory block at compile time, and 
at runtime next bytes (not allocated) are overwritten with "other 
string" which will SIGSEGV for sure.


More information about the Lazarus mailing list