I'm trying to do the following in Delphi 10.1 Berlin, but the compiler return the message "F2084 Internal Error: AV0A785E48-R000000-10-0":
TMyType = (mtValue1, mtValue2);
TMyBaseClass = class
private
  FMyType: TMyType;
public
  property MyType: TMyType read FMyType write FMyType;
end;
TMyClass = class(TMyBaseClass)
private
  FOtherField: Integer;
public
  property OtherField: Integer read FOtherField write FOtherField;
end;
TMyBaseProcess1<T: TMyBaseClass> = class
strict private
  FMyClass: T;
strict protected
  type
    TMyTypeHelper = record Helper for TMyType
    public
      function ToString: string;
    end;
public
  constructor Create(AMyClass: T);
  procedure DoSomething;
end;
TMyProcess1 = class(TMyBaseProcess1<TMyClass>)
end;
TMyBaseProcess2<T: TMyBaseClass> = class
strict private
  FMyClass: T;
strict protected
  type
    TMyTypeHelper = record Helper for TMyType
    public
      function ToInteger: Integer;
    end;
public
  constructor Create(AMyClass: T);
  procedure DoSomethingElse;
end;
TMyProcess2 = class(TMyBaseProcess2<TMyClass>)
end;
The helper in TMyBaseProcess1 is totally different of the helper in TMyBaseProcess2. I can separate the helper and the class without problems. I only want to know why I can't leave them together.
Anyone knows what is the problem? Can I use generics, nested record helper and inheritance this way?
you can not have two helpers pointing to same class type in your case TMyType
from docs..
You can define and associate multiple helpers with a single type. However, only zero or one helper applies in any specific location in source code.
use helper outside that classes
TMyTypeHelper = record Helper for TMyType
    public
      function ToInteger: Integer;
      function ToString: string; 
    end;
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With