[fpc-devel] Fatal: Internal error 200111022

Birger Jansen birger at cnoc.nl
Wed Oct 20 13:30:01 CEST 2010


Hi Michael,

Yes, TSub.Count should be used. I agree that it is dirty and confusing. Best would be to only have it work in Delphi mode.

Kind regards,
  Birger


-----Oorspronkelijk bericht-----
Van: Michael Van Canneyt <michael at freepascal.org>
Verzonden: wo 20-10-2010 13:22
Aan: FPC developers' list <fpc-devel at lists.freepascal.org>; 
Onderwerp: Re: [fpc-devel] Fatal: Internal error 200111022

> 
> Hello,
> 
> Which 'Count' should the compiler select ? I suspect TSub.Count ?
> 
> I think we should prohibit this dubious construct in ObjFC mode.
> (but try to be delphi compatible in Delphi mode)
> 
> Michael.
> 
> On Wed, 20 Oct 2010, Birger Jansen wrote:
> 
> > I'm not sure if this is the correct way to report this, please correct me if 
> I should report in another way.
> >
> > I found an old conversation between Leonardo and Florian about the Fatail 
> internal error 200111022. The thread concluded that they could not reproduce 
> the error.
> >
> > I got this error while converting a large project from Delphi to FPC. It 
> turns out that a base class has a property Count, and a derived class has a 
> function with the same name Count. This will compile, untill you call the 
> property or function Count.
> >
> > I created an example that should explain it. Uncomment the marked line to get 
> the fatal internal error:
> >
> > program project1;
> >
> > {$mode objfpc}{$H+}
> >
> > uses
> >  {$IFDEF UNIX}{$IFDEF UseCThreads}
> >  cthreads,
> >  {$ENDIF}{$ENDIF}
> >  Classes;
> >
> > type
> >
> >  TBase = class
> >  private
> >    function GetCount: Integer;
> >  public
> >    property Count: Integer read GetCount;
> >  end;
> >
> >  TSub = class(TBase)
> >  public
> >    function Count: Integer; overload;
> >  end;
> >
> > function TSub.Count: Integer;
> > begin
> >  Result := 0;
> > end;
> >
> > { TBase }
> >
> > function TBase.GetCount: Integer;
> > begin
> >  Result := 0;
> > end;
> >
> > var
> >  MySub: TSub;
> >  i : Integer;
> > begin
> >  MySub := TSub.Create;
> > // uncomment the next line for Fatal Internal error 200111022:
> > //  for i := 0 to MySub.Count do begin end;
> > end.
> > _______________________________________________
> > fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> > http://lists.freepascal.org/mailman/listinfo/fpc-devel
> >
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>



More information about the fpc-devel mailing list