[Lazarus] [again] Can't take the address of constant expressions

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Fri Jun 10 09:00:47 CEST 2011



On Thu, 9 Jun 2011, John Repucci wrote:

> I was testing the below code from the fpc documentation and I get the "Can't
> take the address of constant expressions" error, with the cursor positioned
> just after "(S)" in the 2nd WriteLn statement.
>
> I do not understand how to fix this.  I did search for the error, but it
> none of it makes sense.
> I'll solve my issue another way, but I'm wondering if this example should be
> fixed.
>
> 0.9.31-30142, 2.4.2, win32-Vista
>
> Any suggestions?

The following will work:

Program Example51;
{ This program demonstrates the AnsiQuotedStr function }
Uses sysutils;

Var
   S : AnsiString;
   P : PChar;

Begin
  S:='He said "Hello" and walked on';
  P:=Pchar(S);
  S:=AnsiQuotedStr(P,'"');
  Writeln (S);
  P:=Pchar(S);
  Writeln(AnsiExtractQuotedStr(P,'"'));
End.

The cause of the error may be that the signature of the AnsiExtractQuotedStr has
changed (the first parameter has been made a var) or else the compiler has become 
more strict in it's checking of the parameters.

I have corrected the example in the docs.

Michael.
>
>
> source:
> http://www.freepascal.org/docs-html/rtl/sysutils/ansiextractquotedstr.html
>
> Program Example51;
> { This program demonstrates the AnsiQuotedStr function }
> Uses sysutils;
>
> Var S : AnsiString;
>
> Begin
> S:='He said "Hello" and walked on';
> S:=AnsiQuotedStr(Pchar(S),'"');
> Writeln (S);
> Writeln(AnsiExtractQuotedStr(Pchar(S),'"'));
> End.
>




More information about the Lazarus mailing list