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