[fpc-pascal]What exactly is Pchar good for ?

Nikolai Zhubr s001 at hotbox.ru
Fri Jul 19 01:22:03 CEST 2002

Thursday, 18 July, 2002, 23:16:12, Martyn Ranyard wrote:
> This doesn't seem right - a PChar is just a pointer to a character, where the 

Consider the following example (for Delphi):

  st: string[10] = 'Hello';
  writeln(PChar(@st[1]) + ' !!!');

The output is:
Hello !!!
Does this mean we can add strings to pointers? No. Consider the
next one:

  HonestPChar = ^Char;
  st: string[10] = 'Hello';
  writeln(HonestPChar(@st[1]) + ' !!!');

Delphi says:
Error: Incompatible types: 'string' and 'HonestPChar'

BTW, this doesn't fit well enough in my head ;) yet. Its like C belch
or something... I'm afraid of pchars.

Sorry don't know how FPC takes this (yet).

> string follows on flat-form in memory, with a #0 at the end.  Is this what's
> going wrong?  Have you forgotton to add the null character at the end?

>  I would have thought that the code behind ansistrings are pchars, but I may
> be wrong.

Delphi's rtl handles strings' operations independently of pchars
whenever possible, iirc. (That is, when not mixed, etc.)
Best regards,
 Nikolai Zhubr

More information about the fpc-pascal mailing list