Icon View Incident Report

Serious Serious
Reported By: Boris B
Reported On: 1/31/2016
For: Version 2.04 Build 1
# 4394 Using Override Directive with Methods of Classes Declared in Implementation Section Causes Error

I'm getting an "Unexpected Compilation Error" popup when I compile the following code.

The error goes away when I remove the override function.

unit Unit1;

interface

uses WebCore, WebUI, WebForms, WebCtrls, WebLabels, WebBtns, WebHTTP;

type

   TForm1 = class(TForm)
      Label1: TLabel;
      Button1: TButton;
      ServerRequestQueue1: TServerRequestQueue;
      procedure Button1Click(Sender: TObject);
      procedure ServerRequest1Complete(Request: TServerRequest);
   private
      { Private declarations }
   public
      { Public declarations }
   end;

var
   Form1: TForm1;

implementation

type

TUserRole = class(TPersistent)
   private
      fID: integer;
      fName: string;
   published
      property ID: integer read fID write fID;
      property Name: string read fName write fName;
   end;

TUserDetails = class(TPersistent)
   private
      fID: integer;
      fName: string;
      fRoles: array of TUserRole;
   protected
      function LoadProperty(AReader: TReader): Boolean; override;
   published
      property ID: integer read fID write fID;
      property Name: string read fName write fName;
      property Roles: array of TUserRole read fRoles write fRoles;
   end;

procedure TForm1.Button1Click(Sender: TObject);
var
   authRequest:TServerRequest;
begin
   authRequest := ServerRequestQueue1.GetNewRequest;
   authRequest.URL := '/api/User';
   authRequest.Method := rmGet;
   authRequest.OnComplete := ServerRequest1Complete;
   ServerRequestQueue1.AddRequest(authRequest);
end;

procedure TForm1.ServerRequest1Complete(Request: TServerRequest);
var
   reader: TReader;
   userDetails: TUserDetails;
begin
   try
      reader := TReader.Create;
      reader.Initialize(Request.ResponseContent.Text);
      userDetails := TUserDetails.Create;
      userDetails.Load(reader);
   
      Label1.Caption := Request.ResponseContent.Text; // userDetails.Name + IntToStr( Length(userDetails.Roles) );
   except
      Label1.Caption := 'error';
   end;
end;

function TUserDetails.LoadProperty(AReader: TReader): Boolean; 
var
  TempPropertyName: String;
begin
  Result:=False;
  TempPropertyName:=AReader.GetPropertyName;
  if (TempPropertyName <> '') then
  begin
     if SameText(TempPropertyName,'Roles') then
     begin
        Result:=True;
        AReader.SkipPropertyName;
        AReader.SkipPropertySeparator;
        LoadArray(AReader);
     end
     else
        Result:=inherited LoadProperty(AReader);
  end;
end;

end.



Resolution Resolution
Fixed Problem on 2/1/2016 in version 2.05 build 1


Products Affected Products Affected
Elevate Web Builder
Elevate Web Builder Trial

Image