[fpc-pascal] Error: Can't take the address of constant expressions

patspiper patspiper at gmail.com
Tue Sep 25 17:03:31 CEST 2012


Hi,

Despite 
http://wiki.freepascal.org/User_Changes_2.4.0#Treating_direct-mapped_properties_as_regular_fields, 
shouldn't the following be legal? I tested under FPC 2.6.1 and 2.7.1.

   TMyRecord = record
     Data: pointer;
   end;

   TMyClass = class
   private
     FRef: TMyRecord;
   public
     property Ref: TMyRecord read FRef write FRef;
   end;

var
   MyClass1, MyClass2: TMyClass;

procedure test;
begin
   Move(MyClass1.Ref.Data^, MyClass2.Ref.Data^, 1);
end;

The complete program is attached.

Thanks,
Stephano
-------------- next part --------------
program constaddresstest;

{$IFDEF FPC}
{$mode delphi}
{$ENDIF}
{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

type

  TMyRecord = record
    Data: pointer;
  end;

  TMyClass = class
  private
    FRef: TMyRecord;
  public
    property Ref: TMyRecord read FRef write FRef;
  end;

var
  MyClass1, MyClass2: TMyClass;

procedure test;
begin
  Move(MyClass1.Ref.Data^, MyClass2.Ref.Data^, 1);
end;

begin
end.



More information about the fpc-pascal mailing list