Whats wrong?!?_(re)

Mon, 16 Jun 1997 00:00:35 +0200



Peter Gerwinski wrote:

> > Why is this correct? Isn't Text, being declared as an array of char,
> > treated as a 0-terminated string, meaning that the #0 should not be
> > printed?
>
> No.  Text being declared as an array of char is treated as a string of
> fixed length.  The Standard doesn't say anything about 0-termination.
> If GPC sometimes takes `chr ( 0 )' as the end of a string, this behaviour
> is a remainder of the C back-end and should be reported as a BUG.
> (I am not, however, speaking of `CString's (= `PChar's) which are a GNU
> (resp. Borland) extension.)

Then we have a conflict with BP (the first real one)-: !

The following writes '1.' with BP, and '1[#0]2.' with gpc (regardless of
the state of --borland-pascal and --extended-syntax):

program x;
const a:array[0..3] of char='1'#0'2'#0;
begin
 writeln(a,'.')
end.

Any ideas how to solve the conflict -- or how to do something equivalent
to the BP meaning of this program in gpc at all? Do we need another
compiler switch...?

And, why is there no #0 output after the '2'? Is this a bug?

Ooops, can't gpc write PChars at all? The following doesn't work:

program x;
{$x+}
var a:PChar;
begin
 writeln(a)
end.

Similarly, the following compiles with BP, but not with gpc:

program x;
{$x+}
var a:PChar;
begin
 a:='Test' {in BP: assign the address of the 0-terminated string 'Test'#0
            (stored somewhere statically) to a}
end.
-- 
Frank Heckenbach, Erlangen, Germany
heckenb@mi.uni-erlangen.de
Turbo Pascal:   http://www.mi.uni-erlangen.de/~heckenb/programs.htm
Internet links: http://www.mi.uni-erlangen.de/~heckenb/links.htm


Frank Heckenbach (heckenb@mi.uni-erlangen.de)

HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada - Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es