[fpc-pascal] Generic (TFPGObjectList) EInvalidCast

Vojtěch Čihák vojtech.cihak at atlas.cz
Tue Dec 11 22:19:11 CET 2018


Hi,
 
why this code gives EInvalidCast at runtime (but compiles well):w
 
program Project1;
{$mode objfpc}{$H+}
 
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, fgl
  { you can add units after this };
 
{$R *.res}
type
  TMyClass = class
    procedure Output1;
  end;
 
  TMyList = class (specialize TFPGObjectList<TMyClass>)
 
  end;
 
  TMyDescClass = class(TMyClass)
    procedure Output2;
  end;
 
var MyList: TMyList;
    MyClass: TMyClass;
 
procedure TMyClass.Output1;
begin
  WriteLn('Output1');
end;
 
procedure TMyDescClass.Output2;
begin
  WriteLn('Output2');
end;
 
begin
  MyList:=TMyList.Create(True);
  MyClass:=TMyClass.Create;
  MyList.Add(MyClass);
  MyList[0].Output1;
  TMyDescClass(MyList[0]);  // EInvalidCast
  MyList.Free;
end.
 
Thanks for help,
 
V.



More information about the fpc-pascal mailing list